summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--generic/tclExecute.c4
-rw-r--r--tests/trace.test14
3 files changed, 21 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 92b6f21..405e399 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-13 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclExecute.c: Provide DECACHE/CACHE protection to the
+ * tests/trace.test: Tcl_LogCommandInfo() call. [Bug 1773040]
+
2007-08-12 Miguel Sofer <msofer@users.sf.net>
* generic/tclCmdMZ.c (Tcl_SplitObjCmd): use TclNewStringObj macro
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index abb30e8..a54ee92 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclExecute.c,v 1.312 2007/08/09 12:20:07 msofer Exp $
+ * RCS: @(#) $Id: tclExecute.c,v 1.313 2007/08/13 23:07:36 dgp Exp $
*/
#include "tclInt.h"
@@ -6511,7 +6511,9 @@ TclExecuteByteCode(
if ((result == TCL_ERROR) && !(iPtr->flags & ERR_ALREADY_LOGGED)) {
bytes = GetSrcInfoForPc(pc, codePtr, &length);
if (bytes != NULL) {
+ DECACHE_STACK_INFO();
Tcl_LogCommandInfo(interp, codePtr->source, bytes, length);
+ CACHE_STACK_INFO();
}
}
iPtr->flags &= ~ERR_ALREADY_LOGGED;
diff --git a/tests/trace.test b/tests/trace.test
index c2d7b17..2646502 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.57 2007/08/09 12:20:08 msofer Exp $
+# RCS: @(#) $Id: trace.test,v 1.58 2007/08/13 23:07:37 dgp Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -246,6 +246,18 @@ test trace-2.6 {trace variable writes on compiled local} {
p
set info
} {x X write 0 willy}
+test trace-2.7 {trace variable writes on errorInfo} -body {
+ #
+ # Check correct behaviour of write traces on errorInfo.
+ # [Bug 1773040]
+ trace add variable ::errorInfo write traceScalar
+ catch {set dne}
+ lrange [set info] 0 2
+} -cleanup {
+ # always remove trace on errorInfo otherwise further tests will fail
+ unset ::errorInfo
+} -result {errorInfo {} write}
+
# append no longer triggers read traces when fetching the old values of