Index: generic/nsf.c =================================================================== diff -u -N -r7312bac146d4f5bf1d2a9655def3c4dc09dbe435 -rfe9126e4cb3733550511071a463f3cc76ce6e4f3 --- generic/nsf.c (.../nsf.c) (revision 7312bac146d4f5bf1d2a9655def3c4dc09dbe435) +++ generic/nsf.c (.../nsf.c) (revision fe9126e4cb3733550511071a463f3cc76ce6e4f3) @@ -5704,9 +5704,9 @@ Tcl_Obj *nameObj; Var *varPtr; GetVarAndNameFromHash(entryPtr, &varPtr, &nameObj); - VarHashRefCount(varPtr)++; if ((varPtr->flags & VAR_TRACED_UNSET) != 0u /* TclIsVarTraced(varPtr) */) { + VarHashRefCount(varPtr)++; (void)UnsetInstVar(interp, 1 /* no error msg */, object, ObjStr(nameObj)); /* The variable might have been brought back by an unset trace, plus @@ -5732,8 +5732,8 @@ } } } + VarHashRefCount(varPtr)--; } - VarHashRefCount(varPtr)--; } } }