summaryrefslogtreecommitdiffstats
path: root/generic/tclStringObj.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2024-07-30 16:54:03 (GMT)
committerdgp <dgp@users.sourceforge.net>2024-07-30 16:54:03 (GMT)
commit2bbab324301a3857c8ac708c5bd9f90fe5d3d456 (patch)
tree212eeaa1e3b6c662776dfa4c4296733644fd9c28 /generic/tclStringObj.c
parentb882ae374d3347c200686c12d27efeaeac4ad298 (diff)
downloadtcl-2bbab324301a3857c8ac708c5bd9f90fe5d3d456.zip
tcl-2bbab324301a3857c8ac708c5bd9f90fe5d3d456.tar.gz
tcl-2bbab324301a3857c8ac708c5bd9f90fe5d3d456.tar.bz2
Plug memory leak in format-19.4.1
Diffstat (limited to 'generic/tclStringObj.c')
-rw-r--r--generic/tclStringObj.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 75b4fdd..258d02b 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -2530,12 +2530,18 @@ Tcl_AppendFormatToObj(
TclNewObj(segment);
allocSegment = 1;
if (!Tcl_AttemptSetObjLength(segment, length)) {
+ if (allocSegment) {
+ Tcl_DecrRefCount(segment);
+ }
msg = overflow;
errCode = "OVERFLOW";
goto errorMsg;
}
bytes = TclGetString(segment);
if (!Tcl_AttemptSetObjLength(segment, snprintf(bytes, segment->length, spec, d))) {
+ if (allocSegment) {
+ Tcl_DecrRefCount(segment);
+ }
msg = overflow;
errCode = "OVERFLOW";
goto errorMsg;