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 --- bignum.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'bignum.c') diff --git a/bignum.c b/bignum.c index cbb0699209..372d578e37 100644 --- a/bignum.c +++ b/bignum.c @@ -1324,9 +1324,15 @@ rb_big_aref(x, y) VALUE x, y; { BDIGIT *xds; - int shift = NUM2INT(y); + int shift; int s1, s2; + if (TYPE(y) == T_BIGNUM) { + if (!RBIGNUM(y)->sign || RBIGNUM(x)->sign) + return INT2FIX(0); + return INT2FIX(1); + } + shift = NUM2INT(y); if (shift < 0) return INT2FIX(0); s1 = shift/BITSPERDIG; s2 = shift%BITSPERDIG; -- cgit v1.2.3