mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-09 14:07:34 +02:00
don't push back final char when reading a bignum-sized float (issue 32, part 2)
This commit is contained in:
parent
4dcfb8aa6b
commit
efb6f24a61
1 changed files with 4 additions and 3 deletions
|
@ -223,17 +223,18 @@ sexp sexp_read_bignum (sexp ctx, sexp in, sexp_uint_t init,
|
|||
res = sexp_bignum_fxadd(ctx, res, digit);
|
||||
}
|
||||
if (c=='.' || c=='e' || c=='E') {
|
||||
if (base != 10)
|
||||
if (base != 10) {
|
||||
res = sexp_read_error(ctx, "found non-base 10 float", SEXP_NULL, in);
|
||||
else {
|
||||
} else {
|
||||
if (c!='.') sexp_push_char(ctx, c, in); /* push the e back */
|
||||
res = sexp_read_float_tail(ctx, in, sexp_bignum_to_double(res), (sign==-1));
|
||||
}
|
||||
} else if ((c!=EOF) && ! is_separator(c)) {
|
||||
res = sexp_read_error(ctx, "invalid numeric syntax",
|
||||
sexp_make_character(c), in);
|
||||
}
|
||||
} else {
|
||||
sexp_push_char(ctx, c, in);
|
||||
}
|
||||
sexp_gc_release1(ctx);
|
||||
return sexp_bignum_normalize(res);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue