diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/ttk/ttkTrace.c | 2 | ||||
-rw-r--r-- | tests/ttk/ttk.test | 19 |
3 files changed, 24 insertions, 2 deletions
@@ -1,3 +1,8 @@ +2011-06-29 Don Porter <dgp@users.sourceforge.net> + + * generic/ttk/ttkTrace.c: [Bug 3341056] Correct segfault due to flaw + * tests/ttk/ttk.test: in the 2011-06-17 commit. + 2011-06-23 Don Porter <dgp@users.sourceforge.net> * changes: Updated for 8.5.10 release. diff --git a/generic/ttk/ttkTrace.c b/generic/ttk/ttkTrace.c index f171f3d..8bc8519 100644 --- a/generic/ttk/ttkTrace.c +++ b/generic/ttk/ttkTrace.c @@ -136,7 +136,7 @@ void Ttk_UntraceVariable(Ttk_TraceHandle *h) * with removing is present. */ while ((cd = Tcl_VarTraceInfo(h->interp, Tcl_GetString(h->varnameObj), - 0, VarTraceProc, cd)) != NULL) { + TCL_GLOBAL_ONLY, VarTraceProc, cd)) != NULL) { if (cd == (ClientData) h) { break; } diff --git a/tests/ttk/ttk.test b/tests/ttk/ttk.test index 1eec180..5a982b6 100644 --- a/tests/ttk/ttk.test +++ b/tests/ttk/ttk.test @@ -560,12 +560,29 @@ test ttk-15.1 {Bug 3062331} -setup { } -body { set Y {} ttk::button .b -textvariable Y - trace variable Y u "destroy .b" + trace variable Y u "destroy .b; #" unset Y } -cleanup { destroy .b } -result {} +test ttk-15.2 {Bug 3341056} -setup { + proc foo {} { + destroy .lf + ttk::labelframe .lf + ttk::checkbutton .lf.cb -text xxx + } +} -body { + ttk::button .b -text xxx -command foo + .b invoke + .b invoke + .lf.cb invoke + destroy .b +} -cleanup { + rename foo {} + destroy .lf +} -result {} + ## Test ensemble processing: # # (See also: SF#2021443) |