summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2005-10-29 17:45:22 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2005-10-29 17:45:22 (GMT)
commit905504b25f37317b91c478e7a9fc1d5166250a73 (patch)
treec33d7e39d470aeab57cb502bab9c9e94316c545c /tests
parent71b715c88b019bf819a112ac7e8b0aa68c6dc9e8 (diff)
downloadtcl-905504b25f37317b91c478e7a9fc1d5166250a73.zip
tcl-905504b25f37317b91c478e7a9fc1d5166250a73.tar.gz
tcl-905504b25f37317b91c478e7a9fc1d5166250a73.tar.bz2
* generic/tclCmdMZ.c (TraceVarProc): [Bug 1337229], partial
fix. Insure that a second call with TCL_TRACE_DESTROYED does not lead to a second call to Tcl_EventuallyFree(). It is still true that that second call should not happen, so the bug is not completely fixed. * tests/trace.test (test-18.3-4): added tests for bugs #1337229 and 1338280.
Diffstat (limited to 'tests')
-rw-r--r--tests/trace.test19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/trace.test b/tests/trace.test
index 3e1f9bb..7862e4b 100644
--- a/tests/trace.test
+++ b/tests/trace.test
@@ -11,7 +11,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: trace.test,v 1.26.2.8 2005/07/26 16:23:59 dgp Exp $
+# RCS: @(#) $Id: trace.test,v 1.26.2.9 2005/10/29 17:45:23 msofer Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -1158,6 +1158,23 @@ test trace-18.2 {namespace delete / trace vdelete combo} {
namespace delete ::foo
info exists ::foo::x
} 0
+test trace-18.3 {namespace delete / trace vdelete combo, Bug \#1337229} {
+ namespace eval ::ns {}
+ trace add variable ::ns::var unset {unset ::ns::var ;#}
+ namespace delete ::ns
+} {}
+test trace-18.4 {namespace delete / trace vdelete combo, Bug \#1338280} {
+ namespace eval ::ref {}
+ set ::ref::var1 AAA
+ trace add variable ::ref::var1 {unset} [list doTrace]
+ set ::ref::var2 BBB
+ trace add variable ::ref::var2 {unset} [list doTrace]
+ proc doTrace {vtraced vidx op} {
+ lappend ::witness [info vars ::ref::*]
+ }
+ namespace delete ::ref
+ lappend ::witness [info vars ::ref::*]
+} {{::ref::var1 ::ref::var2} ::ref::var2 {}}
# Delete arrays when done, so they can be re-used as scalars
# elsewhere.