summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2007-03-12 19:28:49 (GMT)
committerdgp <dgp@users.sourceforge.net>2007-03-12 19:28:49 (GMT)
commiteff94c7a58c193ba8ea8e4b527d89bd7f9a404aa (patch)
treec0897b0e5e07699929553e8d51d8ade561ae713e /tests
parent315198312f0b545b058b63918b6d0497d3f44b0c (diff)
downloadtcl-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.test19
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}