diff options
Diffstat (limited to 'generic/tclUtil.c')
-rw-r--r-- | generic/tclUtil.c | 7 |
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); } |