From ad5a6aa790068a323f9129e92b383c9685700b51 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 20 Apr 2018 00:10:46 +0000 Subject: range.c: fix fixnum loop condition * range.c (range_step): FIXABLE + FIXABLE never overflow, but may not be FIXABLE. [Feature #12912] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_range.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test') diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 84319d7d42..dbfe495f29 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -3,6 +3,7 @@ require 'test/unit' require 'delegate' require 'timeout' require 'bigdecimal' +require 'rbconfig/sizeof' class TestRange < Test::Unit::TestCase def test_new @@ -244,6 +245,11 @@ class TestRange < Test::Unit::TestCase (2**32-1 .. ).step(2) {|x| a << x; break if a.size == 2 } assert_equal([4294967295, 4294967297], a) + a = [] + max = RbConfig::LIMITS["FIXNUM_MAX"] + (max..).step {|x| a << x; break if a.size == 2 } + assert_equal([max, max+1], a) + o1 = Object.new o2 = Object.new def o1.<=>(x); -1; end -- cgit v1.2.3