diff options
author | dgp <dgp@users.sourceforge.net> | 2016-06-16 16:38:36 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-06-16 16:38:36 (GMT) |
commit | 89399770a712e3ea5de6cbae35b5c85ae9fbe810 (patch) | |
tree | 7fb8ece93ba6fe8611ac8c929ef0f2115f3f18a5 /tests | |
parent | 4fac9b8d0fb5648943635cf4c956c9518e610921 (diff) | |
parent | 3cbd3b2bede59c6fd03330ac014e626a0a776522 (diff) | |
download | tcl-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 'tests')
-rw-r--r-- | tests/event.test | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/event.test b/tests/event.test index 0d1b06c..207c799 100644 --- a/tests/event.test +++ b/tests/event.test @@ -583,6 +583,34 @@ test event-11.6 {Tcl_VwaitCmd procedure: round robin scheduling, same source} { removeFile $test2file list $x $y $z } {3 3 done} +test event-11.7 {Bug 16828b3744} { + after idle { + set ::t::v 1 + namespace delete ::t + } + namespace eval ::t { + vwait ::t::v + } +} {} +test event-11.8 {Bug 16828b3744} -setup { + oo::class create A { + variable continue + + method start {} { + after idle [self] destroy + + set continue 0 + vwait [namespace current]::continue + } + destructor { + set continue 1 + } + } +} -body { + [A new] start +} -cleanup { + A destroy +} -result {} test event-12.1 {Tcl_UpdateCmd procedure} -returnCodes error -body { update a b |