diff options
| author | dgp@users.sourceforge.net <dgp> | 2004-10-20 05:28:38 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2004-10-20 05:28:38 (GMT) |
| commit | 63a99d222477aab344a957a664ae3836c70cef97 (patch) | |
| tree | 1d77923cb1f57d180d728d58aaba51b2b1d78c6f /generic/tclThreadTest.c | |
| parent | fa9faa06d3520e072668dca4acdec8beddd44d7d (diff) | |
| download | tcl-63a99d222477aab344a957a664ae3836c70cef97.zip tcl-63a99d222477aab344a957a664ae3836c70cef97.tar.gz tcl-63a99d222477aab344a957a664ae3836c70cef97.tar.bz2 | |
* generic/tclThreadTest.c (ThreadEventProc): Corrected subtle
bug where the returned (char *) from Tcl_GetStringResult(interp)
continued to be used without copying or refcounting, while
activity on the interp continued. That's not safe, and recent
changes demonstrated the lack of safety with failing tests
thread-4.3 and thread-4.5.
Diffstat (limited to 'generic/tclThreadTest.c')
| -rw-r--r-- | generic/tclThreadTest.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index c830687..7ea39dc 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -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: tclThreadTest.c,v 1.16 2002/01/26 01:10:08 dgp Exp $ + * RCS: @(#) $Id: tclThreadTest.c,v 1.17 2004/10/20 05:28:39 dgp Exp $ */ #include "tclInt.h" @@ -868,13 +868,13 @@ ThreadEventProc(evPtr, mask) code = Tcl_GlobalEval(interp, threadEventPtr->script); Tcl_DeleteThreadExitHandler(ThreadFreeProc, (ClientData) threadEventPtr->script); - result = Tcl_GetStringResult(interp); if (code != TCL_OK) { errorCode = Tcl_GetVar(interp, "errorCode", TCL_GLOBAL_ONLY); errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); } else { errorCode = errorInfo = NULL; } + result = Tcl_GetStringResult(interp); } ckfree(threadEventPtr->script); if (resultPtr) { |
