diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | bignum.c | 21 |
2 files changed, 19 insertions, 10 deletions
@@ -1,3 +1,11 @@ +Thu Aug 16 13:06:08 2007 Tanaka Akira <akr@fsij.org> + + * bignum.c (big_lshift): make shift offset long type. + (big_rshift): ditto. + (rb_big_lshift): ditto. + (big_rshift): ditto. + [ruby-dev:31434] + Thu Aug 16 04:09:19 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> * lib/rinda/tuplespace.rb (Rinda::TupleSpace#start_keeper): improve @@ -1577,8 +1577,8 @@ bdigbitsize(BDIGIT x) return size; } -static VALUE big_lshift _((VALUE, unsigned int)); -static VALUE big_rshift _((VALUE, unsigned int)); +static VALUE big_lshift _((VALUE, unsigned long)); +static VALUE big_rshift _((VALUE, unsigned long)); static VALUE big_shift(x, n) VALUE x; @@ -1986,11 +1986,12 @@ VALUE rb_big_lshift(x, y) VALUE x, y; { - int shift, neg = 0; + long shift; + int neg = 0; for (;;) { if (FIXNUM_P(y)) { - shift = FIX2INT(y); + shift = FIX2LONG(y); if (shift < 0) { neg = 1; shift = -shift; @@ -2016,10 +2017,10 @@ rb_big_lshift(x, y) static VALUE big_lshift(x, shift) VALUE x; - unsigned int shift; + unsigned long shift; { BDIGIT *xds, *zds; - int s1 = shift/BITSPERDIG; + long s1 = shift/BITSPERDIG; int s2 = shift%BITSPERDIG; VALUE z; BDIGIT_DBL num = 0; @@ -2052,12 +2053,12 @@ VALUE rb_big_rshift(x, y) VALUE x, y; { - int shift; + long shift; int neg = 0; for (;;) { if (FIXNUM_P(y)) { - shift = FIX2INT(y); + shift = FIX2LONG(y); if (shift < 0) { neg = 1; shift = -shift; @@ -2085,11 +2086,11 @@ rb_big_rshift(x, y) static VALUE big_rshift(x, shift) VALUE x; - unsigned int shift; + unsigned long shift; { BDIGIT *xds, *zds; long s1 = shift/BITSPERDIG; - long s2 = shift%BITSPERDIG; + int s2 = shift%BITSPERDIG; VALUE z; BDIGIT_DBL num = 0; long i, j; |