diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-02-09 20:37:34 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-02-09 20:37:34 +0900 |
commit | da4464b824857d7610f9865ceb452ce0ead49164 (patch) | |
tree | fce8cb0636b401a5db8a225a3ef5c9fee9854d3b /range.c | |
parent | 8edd350bda66a9ecb2c1043627679f2dc48d6f66 (diff) |
[Bug #19426] Fix endless `Range#step` with `#succ` method
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7277
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -532,7 +532,11 @@ range_step(int argc, VALUE *argv, VALUE range) rb_raise(rb_eTypeError, "can't iterate from %s", rb_obj_classname(b)); } - range_each_func(range, step_i, (VALUE)iter); + if (!NIL_P(e)) + range_each_func(range, step_i, (VALUE)iter); + else + for (;; b = rb_funcallv(b, id_succ, 0, 0)) + step_i(b, (VALUE)iter); } } return range; |