From: nobu.nakada@... Date: 2000-07-02T17:47:15+09:00 Subject: [ruby-dev:10165] Re: 1 >> 323232 なかだです。 At Sun, 2 Jul 2000 10:23:46 +0900, Katsuyuki Komatsu wrote: > > + if (i >= sizeof(VALUE)*CHAR_BIT) > > + return INT2FIX(0); > > FIX2LONG(x)が負の場合も考えないと。 > (-1) >> 32が0になっちゃいますよ。 ごもっとも。こうするのが一番手っ取り早いかな。 --- numeric.c~ Mon Jun 12 23:42:34 2000 +++ numeric.c Sun Jul 2 13:10:48 2000 @@ -1242,4 +1242,6 @@ fix_rshift(x, y) if (i < 0) return fix_lshift(x, INT2FIX(-i)); + if (i >= sizeof(VALUE)*CHAR_BIT) + return FIX2LONG(x) < 0 ? INT2FIX(-1) : INT2FIX(0); val = RSHIFT(FIX2LONG(x), i); return INT2FIX(val); -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦