From 628d9b0a51de38c2efebc8be8eb3346e19272de5 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Sat, 6 Aug 2011 03:14:37 +0000 Subject: Plugged a memory leak in double->string conversion. [Bug 3386975] --- ChangeLog | 5 +++++ generic/tclStrToD.c | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d146854..014f46a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-08-05: Kevin B. Kenny + + * generic/tclStrToD.c: Plugged a memory leak in double->string + conversion. [Bug 3386975] + 2011-07-28 Don Porter * library/tzdata/Asia/Anadyr: Update to Olson's tzdata2011h diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 7e76727..2db239e 100755 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -3855,6 +3855,7 @@ StrictBignumConversion(Double* dPtr, * S = 2**s2 * 5*s5 */ + mp_init_multi(&temp, &dig, NULL); TclBNInitBignumFromWideUInt(&b, bw); mp_mul_2d(&b, b2, &b); mp_init_set_int(&S, 1); @@ -3870,11 +3871,9 @@ StrictBignumConversion(Double* dPtr, ilim =ilim1; --k; } - mp_init(&temp); /* Convert the leading digit */ - mp_init(&dig); i = 0; mp_div(&b, &S, &dig, &b); if (dig.used > 1 || dig.dp[0] >= 10) { @@ -3957,7 +3956,7 @@ StrictBignumConversion(Double* dPtr, * Endgame - store the location of the decimal point and the end of the * string. */ - mp_clear_multi(&b, &temp, NULL); + mp_clear_multi(&b, &S, &temp, &dig, NULL); *s = '\0'; *decpt = k; if (endPtr) { -- cgit v0.12