fixing #e prefix combined with non-finite flonums

This commit is contained in:
Alex Shinn 2012-07-10 23:36:29 +09:00
parent 2d62671df8
commit 96d8c7d797

6
sexp.c
View file

@ -2602,6 +2602,12 @@ sexp sexp_read_raw (sexp ctx, sexp in) {
res = sexp_read_number(ctx, in, 16); break; res = sexp_read_number(ctx, in, 16); break;
case 'e': case 'E': case 'e': case 'E':
res = sexp_read(ctx, in); res = sexp_read(ctx, in);
#if SEXP_USE_INFINITIES
if (sexp_flonump(res)
&& (isnan(sexp_flonum_value(res)) || isinf(sexp_flonum_value(res))))
res = sexp_read_error(ctx, "can't convert non-finite flonum to exact", res, in);
else
#endif
if (sexp_flonump(res)) if (sexp_flonump(res))
#if SEXP_USE_RATIOS #if SEXP_USE_RATIOS
res = sexp_double_to_ratio(ctx, sexp_flonum_value(res)); res = sexp_double_to_ratio(ctx, sexp_flonum_value(res));