From f00266198eb866977a61e3519fd0b7004366899b Mon Sep 17 00:00:00 2001 From: Thiago Massa Date: Wed, 14 Sep 2022 23:43:42 +0200 Subject: [PATCH] Fixes [Bug #1234] Range#size for beginless Range is not nil. --- range.c | 4 ++++ test/ruby/test_range.rb | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/range.c b/range.c index b49b1bd79c93f..61ca852c91a2a 100644 --- a/range.c +++ b/range.c @@ -816,6 +816,10 @@ range_size(VALUE range) } } else if (NIL_P(b)) { + if (!rb_obj_is_kind_of(e, rb_cNumeric)) { + return Qnil; + } + return DBL2NUM(HUGE_VAL); } diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 0df0a985ad5b3..0cdd1fdeefb2b 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -776,13 +776,16 @@ def test_size assert_equal 6, (1...6.3).size assert_equal 5, (1.1...6).size assert_equal 42, (1..42).each.size - assert_nil ("a"..."z").size assert_equal Float::INFINITY, (1...).size assert_equal Float::INFINITY, (1.0...).size assert_equal Float::INFINITY, (...1).size assert_equal Float::INFINITY, (...1.0).size + + assert_nil ("a"..."z").size assert_nil ("a"...).size + assert_nil (..."a").size + assert_nil (nil...nil).size end def test_bsearch_typechecks_return_values