diff options
author | msofer <msofer@noemail.net> | 2002-06-20 16:41:29 (GMT) |
---|---|---|
committer | msofer <msofer@noemail.net> | 2002-06-20 16:41:29 (GMT) |
commit | bfba4f445cfb9a8943285d68283688fa27a996fa (patch) | |
tree | 777b1c59e3613b94a0acc93bea5b058a63fc1f18 /generic/tclBasic.c | |
parent | 332d6eec4b01ff418a5c5f8982b8c9d48da92ad7 (diff) | |
download | tcl-bfba4f445cfb9a8943285d68283688fa27a996fa.zip tcl-bfba4f445cfb9a8943285d68283688fa27a996fa.tar.gz tcl-bfba4f445cfb9a8943285d68283688fa27a996fa.tar.bz2 |
fix for [Bug 571385]
FossilOrigin-Name: dc7867f91b1528d8d4b7c78a8c4c88929479a16e
Diffstat (limited to 'generic/tclBasic.c')
-rw-r--r-- | generic/tclBasic.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 4e73386..578b26f 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.61 2002/06/20 00:11:43 dgp Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.62 2002/06/20 16:41:30 msofer Exp $ */ #include "tclInt.h" @@ -3003,7 +3003,7 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) /* * Finally, invoke the command's Tcl_ObjCmdProc. */ - + cmdPtr->refCount++; iPtr->cmdCount++; if ( code == TCL_OK && traceCode == TCL_OK) { savedVarFramePtr = iPtr->varFramePtr; @@ -3020,14 +3020,17 @@ TclEvalObjvInternal(interp, objc, objv, command, length, flags) /* * Call 'leave' command traces */ - if ((cmdPtr->flags & CMD_HAS_EXEC_TRACES) && (traceCode == TCL_OK)) { - traceCode = TclCheckExecutionTraces(interp, command, length, - cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); - } - if (iPtr->tracePtr != NULL && traceCode == TCL_OK) { - traceCode = TclCheckInterpTraces(interp, command, length, - cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); + if (!(cmdPtr->flags & CMD_IS_DELETED)) { + if ((cmdPtr->flags & CMD_HAS_EXEC_TRACES) && (traceCode == TCL_OK)) { + traceCode = TclCheckExecutionTraces (interp, command, length, + cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); + } + if (iPtr->tracePtr != NULL && traceCode == TCL_OK) { + traceCode = TclCheckInterpTraces(interp, command, length, + cmdPtr, code, TCL_TRACE_LEAVE_EXEC, objc, objv); + } } + TclCleanupCommand(cmdPtr); /* * If one of the trace invocation resulted in error, then |