From: Richard Stallman Date: Sat, 9 Oct 1993 16:56:24 +0000 (+0000) Subject: (asctoeg): Allocate local buffer dynamically. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d73e9b8da15ed020f98756edb2f1795b5f063129;p=gcc.git (asctoeg): Allocate local buffer dynamically. (asctoeg): Allocate local buffer dynamically. Count any lost significant digits before the decimal point. From-SVN: r5696 --- diff --git a/gcc/real.c b/gcc/real.c index 57769b4c96d..b6b55a52ff7 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -4626,9 +4626,8 @@ asctoe (s, y) asctoeg (s, y, NBITS); } -/* Space to make a copy of the input string: */ -static char lstr[82]; +/* ASCII to e type, with specified rounding precision = oprec. */ void asctoeg (ss, y, oprec) char *ss; @@ -4640,19 +4639,16 @@ asctoeg (ss, y, oprec) int k, trail, c, rndsav; EMULONG lexp; unsigned EMUSHORT nsign, *p; - char *sp, *s; + char *sp, *s, *lstr; /* Copy the input string. */ + lstr = (char *) alloca (strlen (ss) + 1); s = ss; while (*s == ' ') /* skip leading spaces */ ++s; sp = lstr; - for (k = 0; k < 79; k++) - { - if ((*sp++ = *s++) == '\0') - break; - } - *sp = '\0'; + while ((*sp++ = *s++) == '\0') + ; s = lstr; rndsav = rndprc; @@ -4713,7 +4709,11 @@ asctoeg (ss, y, oprec) } else { + /* Mark any lost non-zero digit. */ lost |= k; + /* Count lost digits before the decimal point. */ + if (decflg == 0) + nexp -= 1; } prec += 1; goto donchr;