summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2014-07-10 15:45:32 (GMT)
committerdgp <dgp@users.sourceforge.net>2014-07-10 15:45:32 (GMT)
commit5c5fdd7d09e5473a987675963b90be7066a72247 (patch)
treeb0a0b590d3ffd626bae11919d4b5785d09de8449
parent2ebc99f24c5036009ba72a25e29a6daf38f6e225 (diff)
downloadtcl-5c5fdd7d09e5473a987675963b90be7066a72247.zip
tcl-5c5fdd7d09e5473a987675963b90be7066a72247.tar.gz
tcl-5c5fdd7d09e5473a987675963b90be7066a72247.tar.bz2
[7368d225a6] Extend the auto-cleanup of zero ref count values passed in
to the Tcl_*SetVar*() family of routines to cover the missing case where the flags value of TCL_APPEND_VALUE is passed in alone. *** POTENTIAL INCOMAPTIBILITY***
-rw-r--r--generic/tclVar.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c
index 12d6911..fda5ff5 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -1916,6 +1916,9 @@ TclPtrSetVar(
Tcl_IncrRefCount(oldValuePtr); /* Since var is ref */
}
Tcl_AppendObjToObj(oldValuePtr, newValuePtr);
+ if (newValuePtr->refCount == 0) {
+ Tcl_DecrRefCount(newValuePtr);
+ }
}
}
} else if (newValuePtr != oldValuePtr) {