fix for (inexact->exact ratio)

This commit is contained in:
Alex Shinn 2011-11-29 08:19:01 +09:00
parent f632037344
commit e3d1414dcc
2 changed files with 7 additions and 1 deletions

View file

@ -676,6 +676,12 @@ SEXP_API sexp sexp_make_unsigned_integer(sexp ctx, sexp_luint_t x);
#define sexp_integerp(x) (sexp_exact_integerp(x) _or_integer_flonump(x))
#if SEXP_USE_RATIOS
#define sexp_exactp(x) (sexp_exact_integerp(x) || sexp_ratiop(x))
#else
#define sexp_exactp(x) sexp_exact_integerp(x)
#endif
#if SEXP_USE_FLONUMS
#define sexp_fixnum_to_flonum(ctx, x) (sexp_make_flonum(ctx, sexp_unbox_fixnum(x)))
#if SEXP_USE_RATIOS

2
vm.c
View file

@ -1684,7 +1684,7 @@ sexp sexp_apply (sexp ctx, sexp proc, sexp args) {
} else {
_ARG1 = sexp_make_fixnum((sexp_sint_t)sexp_flonum_value(_ARG1));
}
} else if (! sexp_fixnump(_ARG1) && ! sexp_bignump(_ARG1)) {
} else if (!sexp_exactp(_ARG1)) {
sexp_raise("inexact->exact: not a number", sexp_list1(ctx, _ARG1));
}
break;