diff options
author | dgp <dgp@users.sourceforge.net> | 2016-06-16 17:09:19 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-06-16 17:09:19 (GMT) |
commit | c96e7bd80446fc3b4804b432ba53e8e31c980aef (patch) | |
tree | b246cfb8b4bf276f5b3ab218e5b91595f9ffe29f /generic/tclEvent.c | |
parent | 4d5010d7a225fa33083901704e60339b088246bb (diff) | |
parent | 89399770a712e3ea5de6cbae35b5c85ae9fbe810 (diff) | |
download | tcl-c96e7bd80446fc3b4804b432ba53e8e31c980aef.zip tcl-c96e7bd80446fc3b4804b432ba53e8e31c980aef.tar.gz tcl-c96e7bd80446fc3b4804b432ba53e8e31c980aef.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/tclEvent.c')
-rw-r--r-- | generic/tclEvent.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/generic/tclEvent.c b/generic/tclEvent.c index a16a3b1..0eabc13 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -1465,6 +1465,8 @@ VwaitVarProc( int *donePtr = clientData; *donePtr = 1; + Tcl_UntraceVar(interp, name1, TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + VwaitVarProc, clientData); return NULL; } |