diff options
author | Kevin B Kenny <kennykb@acm.org> | 2011-08-06 03:14:37 (GMT) |
---|---|---|
committer | Kevin B Kenny <kennykb@acm.org> | 2011-08-06 03:14:37 (GMT) |
commit | 628d9b0a51de38c2efebc8be8eb3346e19272de5 (patch) | |
tree | b5188c4a57c0afc89c1a319939181ef3d4994a1d /generic | |
parent | a954ba397b3a51f24e6aa456de219cc754652f9f (diff) | |
download | tcl-628d9b0a51de38c2efebc8be8eb3346e19272de5.zip tcl-628d9b0a51de38c2efebc8be8eb3346e19272de5.tar.gz tcl-628d9b0a51de38c2efebc8be8eb3346e19272de5.tar.bz2 |
Plugged a memory leak in double->string
conversion. [Bug 3386975]
Diffstat (limited to 'generic')
-rwxr-xr-x | generic/tclStrToD.c | 5 |
1 files changed, 2 insertions, 3 deletions
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) { |