From 297e8727cb5fec9f33c8d5dfb212865d4c06f93f Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Mon, 20 Jan 2014 21:57:13 +0900 Subject: [PATCH] Fixing bug in subtraction of a ratio with a bignum numerator. --- bignum.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bignum.c b/bignum.c index 2619e104..a4724c69 100644 --- a/bignum.c +++ b/bignum.c @@ -1212,6 +1212,8 @@ sexp sexp_sub (sexp ctx, sexp a, sexp b) { /* ... FALLTHROUGH ... */ case SEXP_NUM_RAT_RAT: tmp2 = sexp_make_ratio(ctx, sexp_ratio_numerator(b), sexp_ratio_denominator(b)); + if (sexp_bignump(sexp_ratio_numerator(tmp2))) + sexp_ratio_numerator(tmp2) = sexp_copy_bignum(ctx, NULL, sexp_ratio_numerator(tmp2), 0); sexp_negate_exact(sexp_ratio_numerator(tmp2)); r = sexp_ratio_add(ctx, a, tmp2); if (negatep) {