From 96d8c7d79733d4fb0392b75e36055ac20eaf5a0f Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Tue, 10 Jul 2012 23:36:29 +0900 Subject: [PATCH] fixing #e prefix combined with non-finite flonums --- sexp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sexp.c b/sexp.c index da9dc3cc..c0a0e2b7 100644 --- a/sexp.c +++ b/sexp.c @@ -2602,6 +2602,12 @@ sexp sexp_read_raw (sexp ctx, sexp in) { res = sexp_read_number(ctx, in, 16); break; case 'e': case 'E': 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_USE_RATIOS res = sexp_double_to_ratio(ctx, sexp_flonum_value(res));