From: ceriel Date: Wed, 10 Aug 1988 10:41:15 +0000 (+0000) Subject: fix X-Git-Tag: release-5-5~2939 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a1032b168c8c74da76559c0d687417557e595760;p=ack.git fix --- diff --git a/lang/cem/libcc/gen/ecvt.c b/lang/cem/libcc/gen/ecvt.c index 92229fe1d..c23a29117 100644 --- a/lang/cem/libcc/gen/ecvt.c +++ b/lang/cem/libcc/gen/ecvt.c @@ -46,6 +46,7 @@ cvt(value, ndigit, decpt, sign, ecvtflag) if (ndigit < 0) ndigit = 0; if (ndigit > NDIGITS) ndigit = NDIGITS; pe = &buf[ndigit]; + buf[0] = '\0'; *sign = 0; if (value < 0) { @@ -83,24 +84,26 @@ cvt(value, ndigit, decpt, sign, ecvtflag) *p++ = (int)value + '0'; value = 10.0 * (value - (int)value); } - p = pe; - *p += 5; /* round of at the end */ - while (*p > '9') { - *p = '0'; - if (p > buf) ++*--p; - else { - *p = '1'; - ++*decpt; - if (! ecvtflag) { - /* maybe add another digit at the end, - because the point was shifted right - */ - if (pe > buf) *pe = '0'; - pe++; + if (pe >= buf) { + p = pe; + *p += 5; /* round of at the end */ + while (*p > '9') { + *p = '0'; + if (p > buf) ++*--p; + else { + *p = '1'; + ++*decpt; + if (! ecvtflag) { + /* maybe add another digit at the end, + because the point was shifted right + */ + if (pe > buf) *pe = '0'; + pe++; + } } } + *pe = '\0'; } - *pe = '\0'; return buf; } #endif