From 2b54587e529691da13ad420858ce167f84023ce5 Mon Sep 17 00:00:00 2001 From: das Date: Mon, 19 Jan 2004 05:14:12 +0000 Subject: Import gdtoa 20040118. This revision addresses some corner cases in denormal and locale handling in strtod(). --- contrib/gdtoa/strtod.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'contrib/gdtoa/strtod.c') diff --git a/contrib/gdtoa/strtod.c b/contrib/gdtoa/strtod.c index f1a0c04..4913d50 100644 --- a/contrib/gdtoa/strtod.c +++ b/contrib/gdtoa/strtod.c @@ -114,15 +114,17 @@ strtod switch(s[1]) { case 'x': case 'X': - switch(i = gethex(&s, &fpi, &exp, &bb, sign)) { + switch((i = gethex(&s, &fpi, &exp, &bb, sign)) & STRTOG_Retmask) { case STRTOG_NoNumber: s = s00; sign = 0; case STRTOG_Zero: break; default: - copybits(bits, fpi.nbits, bb); - Bfree(bb); + if (bb) { + copybits(bits, fpi.nbits, bb); + Bfree(bb); + } ULtod(((U*)&rv)->L, bits, exp, i); } goto ret; -- cgit v1.1