summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-03-23 10:10:10 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-03-23 10:10:10 (GMT)
commit29c77a39fb1932211cd7b1e36a825f03616a9000 (patch)
tree8527bca68b32daaf631012c4b5676bfa249df986
parent5e4bc7c4f34f16705d4b893b157ae9c068db6cec (diff)
downloadtcl-29c77a39fb1932211cd7b1e36a825f03616a9000.zip
tcl-29c77a39fb1932211cd7b1e36a825f03616a9000.tar.gz
tcl-29c77a39fb1932211cd7b1e36a825f03616a9000.tar.bz2
Release memory after truncation.
-rw-r--r--generic/tclObj.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 4f7194b..72c2340 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -1769,6 +1769,11 @@ Tcl_InitStringRep(
}
} else {
/* objPtr->bytes != NULL bytes == NULL - Truncate */
+ assert(numBytes <= objPtr->length);
+ if (objPtr->length > numBytes) {
+ objPtr->bytes = (char *)ckrealloc(objPtr->bytes,
+ (unsigned)(numBytes+1));
+ }
objPtr->length = numBytes;
}