summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2008-02-28 22:36:36 (GMT)
committerdgp <dgp@users.sourceforge.net>2008-02-28 22:36:36 (GMT)
commitc08d157ff67d885fef923e525d7a48dc9a2094f4 (patch)
tree25ed0b70b345dd0d4c003553da12796a1c283309
parent4890692476327e5f6e5785303d7e4c7b69951773 (diff)
downloadtcl-c08d157ff67d885fef923e525d7a48dc9a2094f4.zip
tcl-c08d157ff67d885fef923e525d7a48dc9a2094f4.tar.gz
tcl-c08d157ff67d885fef923e525d7a48dc9a2094f4.tar.bz2
* generic/tclBasic.c (TclEvalObjvInternal): Plug memory leak when
an enter trace deletes or changes the command, prompting a reparsing. Don't let the second pass lose commandPtr value allocated during the first pass.
-rw-r--r--ChangeLog5
-rw-r--r--generic/tclBasic.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 994e06a..7f081e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,11 @@
2008-02-28 Don Porter <dgp@users.sourceforge.net>
+ * generic/tclBasic.c (TclEvalObjvInternal): Plug memory leak when
+ an enter trace deletes or changes the command, prompting a reparsing.
+ Don't let the second pass lose commandPtr value allocated during the
+ first pass.
+
* generic/tclCompExpr.c (ParseExpr): Plug memory leak in error
message generation.
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 35c6bb9..f825fdb 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -14,7 +14,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.291 2008/01/23 21:21:26 dgp Exp $
+ * RCS: @(#) $Id: tclBasic.c,v 1.292 2008/02/28 22:36:37 dgp Exp $
*/
#include "tclInt.h"
@@ -3609,6 +3609,9 @@ TclEvalObjvInternal(
if (cmdEpoch != newEpoch) {
checkTraces = 0;
+ if (commandPtr) {
+ Tcl_DecrRefCount(commandPtr);
+ }
goto reparseBecauseOfTraces;
}
}