summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclDictObj.c2
-rw-r--r--generic/tclStringObj.c2
2 files changed, 4 insertions, 0 deletions
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",