summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-06-16 16:38:36 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-06-16 16:38:36 (GMT)
commit89399770a712e3ea5de6cbae35b5c85ae9fbe810 (patch)
tree7fb8ece93ba6fe8611ac8c929ef0f2115f3f18a5 /generic
parent4fac9b8d0fb5648943635cf4c956c9518e610921 (diff)
parent3cbd3b2bede59c6fd03330ac014e626a0a776522 (diff)
downloadtcl-89399770a712e3ea5de6cbae35b5c85ae9fbe810.zip
tcl-89399770a712e3ea5de6cbae35b5c85ae9fbe810.tar.gz
tcl-89399770a712e3ea5de6cbae35b5c85ae9fbe810.tar.bz2
[16828b3744] [vwait] *must* successfully undo its variable trace, or else
it risks corrupting memory. Namespace teardown complexities were giving the traces an opportunity to survive. Added another (arguably better) Tcl_UntraceVar() call to be sure we avoid this problem.
Diffstat (limited to 'generic')
-rw-r--r--generic/tclEvent.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/generic/tclEvent.c b/generic/tclEvent.c
index 8305410..b0b8188 100644
--- a/generic/tclEvent.c
+++ b/generic/tclEvent.c
@@ -1462,6 +1462,8 @@ VwaitVarProc(
int *donePtr = clientData;
*donePtr = 1;
+ Tcl_UntraceVar(interp, name1, TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
+ VwaitVarProc, clientData);
return NULL;
}