diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-04-07 09:01:55 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-04-07 09:01:55 (GMT) |
commit | a1ab68d1ea255fa6445c92b5178da5bedca3f6a4 (patch) | |
tree | 9cf274c7aa8ce518724ec4263a95b88c97e19f79 | |
parent | 83025a44e02d61c30fba4f3e017d029a16f0890f (diff) | |
download | tcl-a1ab68d1ea255fa6445c92b5178da5bedca3f6a4.zip tcl-a1ab68d1ea255fa6445c92b5178da5bedca3f6a4.tar.gz tcl-a1ab68d1ea255fa6445c92b5178da5bedca3f6a4.tar.bz2 |
Revert previous commit, and add comments why it's wrong.
-rw-r--r-- | generic/tclBasic.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 27cbeac..aa6d203 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -3513,6 +3513,8 @@ Tcl_DeleteCommandFromToken( if (cmdPtr->tracePtr != NULL) { CommandTrace *tracePtr; + /* Note that CallCommandTraces() never frees cmdPtr, that's + * done just before Tcl_DeleteCommandFromToken() returns */ CallCommandTraces(iPtr,cmdPtr,NULL,NULL,TCL_TRACE_DELETE); /* @@ -3740,7 +3742,9 @@ CallCommandTraces( */ cmdPtr->flags &= ~CMD_TRACE_ACTIVE; - TclCleanupCommandMacro(cmdPtr); + cmdPtr->refCount--; + /* Don't free cmdPtr here, since the caller of CallCommandTraces() + * is responsible for that. See Tcl_DeleteCommandFromToken() */ iPtr->activeCmdTracePtr = active.nextPtr; Tcl_Release(iPtr); return result; |