several bug fixes after test-suite

This commit is contained in:
eck
1990-03-28 16:37:18 +00:00
parent 2af6ccbe58
commit d9d8f6e325
5 changed files with 19 additions and 18 deletions

View File

@@ -501,6 +501,7 @@ _str_ext_cvt(char *s, char **ss, struct EXTEND *e)
if (c == 'E' || c == 'e') {
int exp1 = 0;
int sign = 1;
int exp_overflow = 0;
switch(*s) {
case '-':
@@ -515,13 +516,16 @@ _str_ext_cvt(char *s, char **ss, struct EXTEND *e)
exp1 = 10 * exp1 + (c - '0');
if ((tmp = sign * exp1 + exp) > MAX_EXP ||
tmp < -MAX_EXP) {
errno = ERANGE;
exp_overflow = 1;
}
} while (c = *++s, isdigit(c));
if (ss) *ss = s;
}
exp += sign * exp1;
if (errno == ERANGE) exp = sign * MAX_EXP;
if (exp_overflow) {
exp = sign * MAX_EXP;
if (e->m1 != 0 || e->m2 != 0) errno = ERANGE;
}
}
if (e->m1 == 0 && e->m2 == 0) return;
e->exp = 63;