summaryrefslogtreecommitdiffstats
path: root/generic/tclUtil.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclUtil.c')
-rw-r--r--generic/tclUtil.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index e7941b3..d36aabf 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclUtil.c,v 1.51 2004/12/02 00:09:40 dgp Exp $
+ * RCS: @(#) $Id: tclUtil.c,v 1.52 2004/12/02 23:24:57 dgp Exp $
*/
#include "tclInt.h"
@@ -2705,13 +2705,14 @@ TclSetProcessGlobalValue(pgvPtr, newValue, encoding)
/*
* Fill the local thread copy directly with the Tcl_Obj
- * value to avoid loss of the intrep
+ * value to avoid loss of the intrep. Increment newValue
+ * refCount early to handle case where we set a PGV to itself.
*/
+ Tcl_IncrRefCount(newValue);
cacheMap = GetThreadHash(&pgvPtr->key);
ClearHash(cacheMap);
hPtr = Tcl_CreateHashEntry(cacheMap, (char *)pgvPtr->epoch, &dummy);
Tcl_SetHashValue(hPtr, (ClientData) newValue);
- Tcl_IncrRefCount(newValue);
Tcl_MutexUnlock(&pgvPtr->mutex);
}