From: ruby-core@... Date: 2014-02-28T02:07:05+00:00 Subject: [ruby-core:61128] [ruby-trunk - Bug #9575] Step with 0 step is buggy Issue #9575 has been updated by Marc-Andre Lafortune. Found many other problems when some arguments are floats: 4.2.step(by: 0.0).first(2) # => [], should be [4.2, 4.2] 4.2.step(by: -0.0).first(2) # => [-Infinity, -Infinity], should be [4.2, 4.2] 42.step(by: 0, to: -Float::INFINITY).first(2) # => [], should be [42, 42] 42.step(by: 0, to: 42.5).first(2) # => [42.0, 42.0], should really be [42, 42] I believe I've fixed all cases. ---------------------------------------- Bug #9575: Step with 0 step is buggy https://bugs.ruby-lang.org/issues/9575#change-45509 * Author: Marc-Andre Lafortune * Status: Open * Priority: Normal * Assignee: Marc-Andre Lafortune * Category: core * Target version: current: 2.2.0 * ruby -v: r45199 * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- I didn't realize that we now allow stepping with a '0' step. It should probably have been mentioned in the NEWS of 2.1.0? Anyways, couple of bugs with that new feature: bn = 1 << 100 bn.step(by: 0, to: bn).first(2) # => [bn, bn] ok bn.step(by: 0).first(2) # => [bn.to_f, bn.to_f] not ok bn.step(by: 0, to: 0).first(2) # => [] not ok The corresponding `size` don't all work either: bn.step(by: 0) # => Float::INFINITY, ok bn.step(by: 0, to: bn).size # => ZeroDivisionError: divided by 0, should be infinity bn.step(by: 0, to: 0).size # => same 1.step(by:0, to: 42).size # => same My patch is almost finished. -- http://bugs.ruby-lang.org/