summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2021-04-07 09:01:55 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2021-04-07 09:01:55 (GMT)
commita1ab68d1ea255fa6445c92b5178da5bedca3f6a4 (patch)
tree9cf274c7aa8ce518724ec4263a95b88c97e19f79
parent83025a44e02d61c30fba4f3e017d029a16f0890f (diff)
downloadtcl-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.c6
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;