From 8bddb01ebba8bd1b0c60fd7fc820705259f16b44 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Tue, 7 Sep 2004 00:12:45 +0000 Subject: [PATCH] (scm_integer_expt): Reject exponent +/-inf. (scm_integer_p): +/-inf is not an integer. Bug report by Bill Schottstaedt. --- libguile/numbers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libguile/numbers.c b/libguile/numbers.c index 19ccedaa2..2d52bb097 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -1701,7 +1701,7 @@ SCM_DEFINE (scm_integer_expt, "integer-expt", 2, 0, 0, else if (SCM_REALP (k)) { double r = SCM_REAL_VALUE (k); - if (floor (r) != r) + if (floor (r) != r || xisinf (r)) SCM_WRONG_TYPE_ARG (2, k); if ((r > SCM_MOST_POSITIVE_FIXNUM) || (r < SCM_MOST_NEGATIVE_FIXNUM)) { @@ -3095,6 +3095,8 @@ SCM_DEFINE (scm_integer_p, "integer?", 1, 0, 0, if (SCM_COMPLEXP (x)) return SCM_BOOL_F; r = SCM_REAL_VALUE (x); + if (xisinf (r)) + return SCM_BOOL_F; if (r == floor (r)) return SCM_BOOL_T; return SCM_BOOL_F;