diff options
author | Richard Stallman <rms@gnu.org> | 1993-10-09 16:56:24 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-10-09 16:56:24 +0000 |
commit | d73e9b8da15ed020f98756edb2f1795b5f063129 (patch) | |
tree | cba6e858982dd07c4dec00025ad5ef527825946e /gcc/real.c | |
parent | 0debc00746c5f125a208f0f35dd6cbae415c6596 (diff) | |
download | gcc-d73e9b8da15ed020f98756edb2f1795b5f063129.tar.gz |
(asctoeg): Allocate local buffer dynamically.
(asctoeg): Allocate local buffer dynamically. Count
any lost significant digits before the decimal point.
From-SVN: r5696
Diffstat (limited to 'gcc/real.c')
-rw-r--r-- | gcc/real.c | 18 |
1 files changed, 9 insertions, 9 deletions
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; |