diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-02-19 11:36:12 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-02-19 11:36:12 (GMT) |
commit | 3eafe75fbc925da366e32a959d479a254ebfc02a (patch) | |
tree | 0b4fe40c61217c72dd682087696ae4a1236f9ff7 /generic/tclTrace.c | |
parent | 34480654e98d2543e4d9a16e4cd5cbcc5630b604 (diff) | |
parent | f8e35a6396aefc1ffbb6a104b8cfd659e1afa2d9 (diff) | |
download | tcl-3eafe75fbc925da366e32a959d479a254ebfc02a.zip tcl-3eafe75fbc925da366e32a959d479a254ebfc02a.tar.gz tcl-3eafe75fbc925da366e32a959d479a254ebfc02a.tar.bz2 |
Fix bug #2438181: Incorrect error reporting in traces.
Test-case and fix provided by Poor Yorick.
Diffstat (limited to 'generic/tclTrace.c')
-rw-r--r-- | generic/tclTrace.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/generic/tclTrace.c b/generic/tclTrace.c index 0f297a4..d7430ca 100644 --- a/generic/tclTrace.c +++ b/generic/tclTrace.c @@ -1485,7 +1485,11 @@ TclCheckExecutionTraces( } iPtr->activeCmdTracePtr = active.nextPtr; if (state) { - Tcl_RestoreInterpState(interp, state); + if (traceCode == TCL_OK) { + (void) Tcl_RestoreInterpState(interp, state); + } else { + Tcl_DiscardInterpState(state); + } } return traceCode; |