diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | bignum.c | 5 | ||||
-rw-r--r-- | test/ruby/test_bignum.rb | 2 |
3 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Sun Aug 1 09:35:35 2010 Yusuke Endoh <[email protected]> + + * bignum.c (big_op): comparison of bignum and infinity has returned 1 + or -1, but it must return boolean. + Sun Aug 1 09:44:25 2010 Tanaka Akira <[email protected]> * class.c (rb_include_module): don't clear the method cache if the @@ -1453,8 +1453,9 @@ big_op(VALUE x, VALUE y, int op) double a = RFLOAT_VALUE(y); if (isinf(a)) { - if (a > 0.0) return INT2FIX(-1); - else return INT2FIX(1); + if (a > 0.0) rel = INT2FIX(-1); + else rel = INT2FIX(1); + break; } rel = rb_dbl_cmp(rb_big2dbl(x), a); break; diff --git a/test/ruby/test_bignum.rb b/test/ruby/test_bignum.rb index 5cff48c4d7..13b5b9dbe0 100644 --- a/test/ruby/test_bignum.rb +++ b/test/ruby/test_bignum.rb @@ -185,6 +185,8 @@ class TestBignum < Test::Unit::TestCase assert(T31P < T64P) assert(T64P > T31P) assert_raise(ArgumentError) { T31P < "foo" } + assert(T64 < (1.0/0.0)) + assert(!(T64 > (1.0/0.0))) end def test_eq |