summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-01 12:22:06 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-01 12:22:06 +0000
commitb22c83311d62dbb74677418c010f20c12e64faf2 (patch)
tree851cd64e2a5623da54f5748bd21e21cab30df6da
parentff60853e4cb6513e6c7afc7804b9cb54927215d6 (diff)
revert r28788 (backport of r28751).
The patch seems to be revised by r28763. The patch will be backported after it is stabilized by an experience in trunk. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--numeric.c10
-rw-r--r--test/ruby/test_float.rb14
3 files changed, 3 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index d2b04ded7e..c4fe81b873 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -19,11 +19,6 @@ Sun Aug 1 09:35:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
* bignum.c (big_op): comparison of bignum and infinity has returned 1
or -1, but it must return boolean.
-Sun Jul 25 05:37:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (flo_cmp): honor the result of infinite? method of the
- other. [ruby-core:31470]
-
Wed Jul 21 15:22:17 2010 Evan Phoenix <evan@fallingsnow.net>
* lib/rubygems/custom_require.rb, gem_prelude.rb: Load code from
diff --git a/numeric.c b/numeric.c
index d291a6dd85..fdea3ce50c 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1016,7 +1016,7 @@ rb_dbl_cmp(double a, double b)
static VALUE
flo_cmp(VALUE x, VALUE y)
{
- double a, b, i;
+ double a, b;
a = RFLOAT_VALUE(x);
if (isnan(a)) return Qnil;
@@ -1038,12 +1038,8 @@ flo_cmp(VALUE x, VALUE y)
break;
default:
- if (isinf(a) && (i = rb_check_funcall(y, rb_intern("infinite?"), 0, 0)) != Qundef) {
- if (RTEST(i)) {
- int j = rb_cmpint(i, x, y);
- j = (a > 0.0) ? (j > 0 ? 0 : +1) : (j < 0 ? 0 : -1);
- return INT2FIX(j);
- }
+ if (isinf(a) && (!rb_respond_to(y, rb_intern("infinite?")) ||
+ !RTEST(rb_funcall(y, rb_intern("infinite?"), 0, 0)))) {
if (a > 0.0) return INT2FIX(1);
return INT2FIX(-1);
}
diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb
index 5687729418..03d9c94766 100644
--- a/test/ruby/test_float.rb
+++ b/test/ruby/test_float.rb
@@ -239,20 +239,6 @@ class TestFloat < Test::Unit::TestCase
assert_equal(-1, (Float::MAX.to_i*2) <=> inf)
assert_equal(1, (-Float::MAX.to_i*2) <=> -inf)
- bug3609 = '[ruby-core:31470]'
- def (pinf = Object.new).infinite?; +1 end
- def (ninf = Object.new).infinite?; -1 end
- def (fin = Object.new).infinite?; nil end
- nonum = Object.new
- assert_equal(0, inf <=> pinf, bug3609)
- assert_equal(1, inf <=> fin, bug3609)
- assert_equal(1, inf <=> ninf, bug3609)
- assert_nil(inf <=> nonum, bug3609)
- assert_equal(-1, -inf <=> pinf, bug3609)
- assert_equal(-1, -inf <=> fin, bug3609)
- assert_equal(0, -inf <=> ninf, bug3609)
- assert_nil(-inf <=> nonum, bug3609)
-
assert_raise(ArgumentError) { 1.0 > nil }
assert_raise(ArgumentError) { 1.0 >= nil }
assert_raise(ArgumentError) { 1.0 < nil }