diff options
| author | dgp <dgp@users.sourceforge.net> | 2024-07-30 16:54:03 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2024-07-30 16:54:03 (GMT) |
| commit | 851ecc7356cb1aad10e829906c0ce15ffa70d36c (patch) | |
| tree | 212eeaa1e3b6c662776dfa4c4296733644fd9c28 /generic/tclStringObj.c | |
| parent | cf81b9fdca550a9645093a3ede4b59d526f81c53 (diff) | |
| download | tcl-851ecc7356cb1aad10e829906c0ce15ffa70d36c.zip tcl-851ecc7356cb1aad10e829906c0ce15ffa70d36c.tar.gz tcl-851ecc7356cb1aad10e829906c0ce15ffa70d36c.tar.bz2 | |
Plug memory leak in format-19.4.1
Diffstat (limited to 'generic/tclStringObj.c')
| -rw-r--r-- | generic/tclStringObj.c | 6 |
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; |
