From 9dd60f6f138a0f8615a31eff7cb80ea376e5d286 Mon Sep 17 00:00:00 2001 From: Alex Shinn <ashinn@users.noreply.github.com> Date: Sat, 1 Feb 2014 22:25:41 +0900 Subject: [PATCH] Fixing an off-by-one error in bignum arithmetic-shift. --- lib/srfi/33/bit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/srfi/33/bit.c b/lib/srfi/33/bit.c index 1db002a7..57b54ba4 100644 --- a/lib/srfi/33/bit.c +++ b/lib/srfi/33/bit.c @@ -186,7 +186,7 @@ static sexp sexp_arithmetic_shift (sexp ctx, sexp self, sexp_sint_t n, sexp i, s } else { res = sexp_make_bignum(ctx, len - offset + 1); sexp_bignum_sign(res) = sexp_bignum_sign(i); - for (j=len-offset, tmp=0; j>=0; j--) { + for (j=len-offset-1, tmp=0; j>=0; j--) { sexp_bignum_data(res)[j] = (sexp_bignum_data(i)[j+offset] >> bit_shift)+ tmp; tmp = sexp_bignum_data(i)[j+offset]