summaryrefslogtreecommitdiffstats
path: root/tests/trace.test
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2005-10-29 19:16:32 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2005-10-29 19:16:32 (GMT)
commite4937d5509607c42d8ca01d05763d87e8b3e43ce (patch)
treead0e330970d975778094123140c4149e361438bb /tests/trace.test
parent4b9135a520fdab05e275330093a65b2e1d957438 (diff)
downloadtcl-e4937d5509607c42d8ca01d05763d87e8b3e43ce.zip
tcl-e4937d5509607c42d8ca01d05763d87e8b3e43ce.tar.gz
tcl-e4937d5509607c42d8ca01d05763d87e8b3e43ce.tar.bz2
* generic/tclTrace.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/trace.test')
-rw-r--r--tests/trace.test22
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/trace.test b/tests/trace.test
index 6b78fed..93894bf 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.40 2005/07/26 16:24:35 dgp Exp $
+# RCS: @(#) $Id: trace.test,v 1.41 2005/10/29 19:16:32 msofer Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -1160,6 +1160,26 @@ 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 doTrace
+ set ::ref::var2 BBB
+ trace add variable ::ref::var2 {unset} doTrace
+ proc doTrace {vtraced vidx op} {
+ global info
+ append info [catch {set ::$vtraced}][llength [info vars ::ref::*]]
+ }
+ set info {}
+ namespace delete ::ref
+ rename doTrace {}
+ set info
+} 1110
# Delete arrays when done, so they can be re-used as scalars
# elsewhere.