diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 2 | ||||
-rw-r--r-- | time.c | 2 |
3 files changed, 7 insertions, 1 deletions
@@ -1,3 +1,7 @@ +Thu Apr 1 04:55:08 2010 Tanaka Akira <akr@fsij.org> + + * time.c (rb_big_abs_find_minbit): fix handling the last word. + Thu Apr 1 04:30:11 2010 Tanaka Akira <akr@fsij.org> * time.c (long_mul): overflow condition changed. diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 108fcdbc20..cb17f416ee 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -181,6 +181,8 @@ class TestTime < Test::Unit::TestCase assert_equal(-146138510344, t.year) t = Time.at(-0x5000_0000_0000_0001) assert_equal(-182673138422, t.year) + t = Time.at(-0x6000_0000_0000_0000) + assert_equal(-219207766501, t.year) end def test_at2 @@ -343,7 +343,7 @@ rb_big_abs_find_minbit(VALUE big) return Qnil; res = mul(LONG2NUM(i), INT2FIX(SIZEOF_BDIGITS * CHAR_BIT)); d = ds[i]; - res = add(res, LONG2FIX(bdigit_find_maxbit(d))); + res = add(res, LONG2FIX(bdigit_find_maxbit(d & -d))); return res; } |