Index: strtod.c =================================================================== RCS file: /cvs/src/src/newlib/libc/stdlib/strtod.c,v retrieving revision 1.16 diff -p -u -r1.16 strtod.c --- strtod.c 3 Dec 2009 16:11:27 -0000 1.16 +++ strtod.c 25 Oct 2010 14:20:08 -0000 @@ -440,6 +440,15 @@ _DEFUN (_strtod_r, (ptr, s00, se), if (!nd0) nd0 = nd; k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; +#if (DBL_DIG+1) < 9 + if (nd > DBL_DIG+1) { + int s=9-(DBL_DIG+1); /* need to divide y by 10**s */ +#ifdef SET_INEXACT + oldinexact = get_inexact(); +#endif + while(s--) y /= 10; + } +#endif /* DBL_DIG < 9 */ dval(rv) = y; if (k > 9) { #ifdef SET_INEXACT