From 8a910c1a53dec36b9d3dd4b7a378017251c3ef56 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 13 Oct 2017 16:15:52 +0000 Subject: Plug some memleaks. --- generic/tclDictObj.c | 2 ++ generic/tclStringObj.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index c82f88a..1c74c5f 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -2331,7 +2331,9 @@ DictAppendCmd( valuePtr = Tcl_DuplicateObj(valuePtr); } + Tcl_IncrRefCount(appendObjPtr); Tcl_AppendObjToObj(valuePtr, appendObjPtr); + Tcl_DecrRefCount(appendObjPtr); } Tcl_DictObjPut(NULL, dictPtr, objv[2], valuePtr); diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 59758bb..7c1d42b 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -3102,6 +3102,7 @@ TclStringCatObjv( /* Ugly interface! No scheme to init array size. */ objResultPtr = Tcl_NewUnicodeObj(&ch, 0); /* PANIC? */ if (0 == Tcl_AttemptSetObjLength(objResultPtr, length)) { + Tcl_DecrRefCount(objResultPtr); if (interp) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "concatenation failed: unable to alloc %" @@ -3149,6 +3150,7 @@ TclStringCatObjv( } else { objResultPtr = Tcl_NewObj(); /* PANIC? */ if (0 == Tcl_AttemptSetObjLength(objResultPtr, length)) { + Tcl_DecrRefCount(objResultPtr); if (interp) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "concatenation failed: unable to alloc %u bytes", -- cgit v0.12