diff options
author | dgp <dgp@users.sourceforge.net> | 2007-03-12 19:28:49 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2007-03-12 19:28:49 (GMT) |
commit | eff94c7a58c193ba8ea8e4b527d89bd7f9a404aa (patch) | |
tree | c0897b0e5e07699929553e8d51d8ade561ae713e /tests | |
parent | 315198312f0b545b058b63918b6d0497d3f44b0c (diff) | |
download | tcl-eff94c7a58c193ba8ea8e4b527d89bd7f9a404aa.zip tcl-eff94c7a58c193ba8ea8e4b527d89bd7f9a404aa.tar.gz tcl-eff94c7a58c193ba8ea8e4b527d89bd7f9a404aa.tar.bz2 |
* generic/tclEvent.c (HandleBgErrors): Make efficient private copy
* tests/event.test (event-5.3): of the command prefix for the interp's
background error handling command to avoid panics due to pointers
to memory invalid after shimmering. [Bug 1670155]
Diffstat (limited to 'tests')
-rw-r--r-- | tests/event.test | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/event.test b/tests/event.test index e2553d6..101a17e 100644 --- a/tests/event.test +++ b/tests/event.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: event.test,v 1.23 2006/11/27 20:16:03 kennykb Exp $ +# RCS: @(#) $Id: event.test,v 1.24 2007/03/12 19:28:50 dgp Exp $ package require tcltest 2 namespace import -force ::tcltest::* @@ -188,6 +188,23 @@ test event-5.2 {Tcl_BackgroundError, HandleBgErrors procedures} { rename bgerror {} set x } {{a simple error}} +test event-5.3 {HandleBgErrors: [Bug 1670155]} -setup { + variable x + proc demo args {variable x done} + variable target [list [namespace which demo] x] + proc trial args {variable target; string length $target} + trace add execution demo enter [namespace code trial] + variable save [interp bgerror {}] + interp bgerror {} $target +} -body { + after 0 {error bar} + vwait [namespace which -variable x] +} -cleanup { + interp bgerror {} $save + unset x target save + rename demo {} + rename trial {} +} -result {} test event-6.1 {BgErrorDeleteProc procedure} { catch {interp delete foo} |