From bbb608ad790db8495e092eede59df4bf3453f157 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 1 Nov 2001 05:11:24 +0000 Subject: * bignum.c (rb_big_aref): idx may be a Bignum. * numeric.c (fix_aref): negative index must return zero. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- numeric.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'numeric.c') diff --git a/numeric.c b/numeric.c index 5fb67f3390..5f91fd4c37 100644 --- a/numeric.c +++ b/numeric.c @@ -1313,13 +1313,15 @@ fix_aref(fix, idx) long val = FIX2LONG(fix); if (TYPE(idx) == T_BIGNUM) { - if (val >= 0) return INT2FIX(0); + if (!RBIGNUM(idx)->sign || val >= 0) + return INT2FIX(0); return INT2FIX(1); } else { int i = NUM2INT(idx); - if (i < 0 || sizeof(VALUE)*CHAR_BIT-1 < i) { + if (i < 0) return INT2FIX(0); + if (sizeof(VALUE)*CHAR_BIT-1 < i) { if (val < 0) return INT2FIX(1); return INT2FIX(0); } -- cgit v1.2.3