summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2007-05-01 20:20:43 (GMT)
committerdgp <dgp@users.sourceforge.net>2007-05-01 20:20:43 (GMT)
commit2ac57a490ebcd5bd43e7f03e705a243ce67ffa37 (patch)
treec0f7a2bd15492655b2c144bcf9fbf2ca1a4a5ddb
parent7eeb272ffcc4b50b35d956dc99f614cea2821e33 (diff)
downloadtcl-2ac57a490ebcd5bd43e7f03e705a243ce67ffa37.zip
tcl-2ac57a490ebcd5bd43e7f03e705a243ce67ffa37.tar.gz
tcl-2ac57a490ebcd5bd43e7f03e705a243ce67ffa37.tar.bz2
* generic/tclCmdMZ.c (STR_MAP): When [string map] has a pure dict
map, a missing Tcl_DictObjDone() call led to a memleak. [Bug 1710709]
-rw-r--r--ChangeLog7
-rw-r--r--generic/tclCmdMZ.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index aa97099..e074932 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-01 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclCmdMZ.c (STR_MAP): When [string map] has a pure dict
+ map, a missing Tcl_DictObjDone() call led to a memleak. [Bug 1710709]
+
2007-04-30 Daniel Steffen <das@users.sourceforge.net>
* unix/Makefile.in: add 'tclsh' dependency to install targets that rely
@@ -10,7 +15,7 @@
Tcl_Obj's as late as possible, and only when actually needed. [Bug
1705778, leak K29].
-2007-04-30 Kevin B, Kenny <kennykb@acm.org>
+2007-04-30 Kevin B. Kenny <kennykb@acm.org>
* generic/tclProc.c (Tcl_ProcObjCmd, SetLambdaFromAny): Corrected
reference count mismanagement on the name of the source file in
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c
index dde42b3..274d8af 100644
--- a/generic/tclCmdMZ.c
+++ b/generic/tclCmdMZ.c
@@ -15,7 +15,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclCmdMZ.c,v 1.149 2007/04/20 05:51:10 kennykb Exp $
+ * RCS: @(#) $Id: tclCmdMZ.c,v 1.150 2007/05/01 20:20:44 dgp Exp $
*/
#include "tclInt.h"
@@ -1887,6 +1887,7 @@ Tcl_StringObjCmd(
for (i=2 ; i<mapElemc ; i+=2) {
Tcl_DictObjNext(&search, mapElemv+i, mapElemv+i+1, &done);
}
+ Tcl_DictObjDone(&search);
} else {
if (Tcl_ListObjGetElements(interp, objv[objc-2],
&mapElemc, &mapElemv) != TCL_OK) {