From a8448545368d5029b9768248fab741b7974049d5 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 3 Jan 2025 23:07:18 +0900 Subject: [PATCH] Don't allow mixing rational and floating point syntax. Closes #1014. --- sexp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sexp.c b/sexp.c index 9f809758..5ea2c4ea 100644 --- a/sexp.c +++ b/sexp.c @@ -3019,7 +3019,8 @@ sexp sexp_read_number (sexp ctx, sexp in, int base, int exactp) { } else if (c=='/') { sexp_gc_preserve2(ctx, res, den); den = sexp_read_number(ctx, in, base, exactp); - if (! (sexp_fixnump(den) || sexp_bignump(den) || sexp_complexp(den))) + if (! (sexp_fixnump(den) || sexp_bignump(den) || + (sexp_complexp(den) && sexp_exactp(sexp_complex_real(den)) && sexp_exactp(sexp_complex_imag(den))))) res = (sexp_exceptionp(den) ? den : sexp_read_error(ctx, "invalid rational syntax", den, in)); else {