From ced84e1de5cdbd9a1c6a9e1850ab53968facc2d6 Mon Sep 17 00:00:00 2001 From: Joe Mistachkin Date: Sun, 18 Oct 2009 08:00:40 +0000 Subject: Fix for [Bug 1565466] --- ChangeLog | 8 ++++++++ tests/thread.test | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 263c1b8..1814f7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-18 Joe Mistachkin + + * tests/thread.test (thread-4.[345]): [Bug 1565466]: Correct tests to + save their error state before the final call to threadReap just in case + it triggers an "invalid thread id" error. This error can occur if one + or more of the target threads has exited prior to the attempt to send + it an asynchronous exit command. + 2009-10-17 Donal K. Fellows * generic/tclVar.c (UnsetVarStruct, TclDeleteNamespaceVars) diff --git a/tests/thread.test b/tests/thread.test index be2bd40..15988bd 100644 --- a/tests/thread.test +++ b/tests/thread.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: thread.test,v 1.20 2008/07/19 22:50:39 nijtmans Exp $ +# RCS: @(#) $Id: thread.test,v 1.21 2009/10/18 08:00:40 mistachkin Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -186,8 +186,9 @@ test thread-4.3 {TclThreadSend preserve errorInfo} {testthread} { set len [llength [testthread names]] set serverthread [testthread create] set x [catch {testthread send $serverthread {set undef}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 1 {can't read "undef": no such variable} {can't read "undef": no such variable while executing "set undef" @@ -199,16 +200,18 @@ test thread-4.4 {TclThreadSend preserve code} {testthread} { set serverthread [testthread create] set ::errorInfo {} set x [catch {testthread send $serverthread {set ::errorInfo {}; break}} msg] + set savedErrorInfo $::errorInfo threadReap - list $len $x $msg $::errorInfo + list $len $x $msg $savedErrorInfo } {1 3 {} {}} test thread-4.5 {TclThreadSend preserve errorCode} {testthread} { threadReap set ::tcltest::mainThread [testthread names] set serverthread [testthread create] set x [catch {testthread send $serverthread {error ERR INFO CODE}} msg] + set savedErrorCode $::errorCode threadReap - list $x $msg $::errorCode + list $x $msg $savedErrorCode } {1 ERR CODE} -- cgit v0.12