diff options
author | dgp <dgp@users.sourceforge.net> | 2016-09-06 20:30:07 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-09-06 20:30:07 (GMT) |
commit | 7ca470456bc1ab2142bcdbe858eabd551b8d589c (patch) | |
tree | 98754cbedd26b0ba64676c965398c948535417e9 | |
parent | c2e7b1ce363284cac138fd5932cf6dbf96dd1e4d (diff) | |
download | tcl-7ca470456bc1ab2142bcdbe858eabd551b8d589c.zip tcl-7ca470456bc1ab2142bcdbe858eabd551b8d589c.tar.gz tcl-7ca470456bc1ab2142bcdbe858eabd551b8d589c.tar.bz2 |
[4dbdd9af14] Proposed fix for mem leak.
-rw-r--r-- | generic/tclVar.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c index bdc64b7..55eb91c 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -4498,7 +4498,6 @@ TclDeleteNamespaceVars( Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, objPtr); UnsetVarStruct(varPtr, NULL, iPtr, /* part1 */ objPtr, NULL, flags); - Tcl_DecrRefCount(objPtr); /* free no longer needed obj */ /* * Remove the variable from the table and force it undefined in case @@ -4527,6 +4526,12 @@ TclDeleteNamespaceVars( } } } + + if (!TclIsVarUndefined(varPtr)) { + UnsetVarStruct(varPtr, NULL, iPtr, /* part1 */ objPtr, + NULL, flags); + } + Tcl_DecrRefCount(objPtr); /* free no longer needed obj */ VarHashRefCount(varPtr)--; VarHashDeleteEntry(varPtr); } |