diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-10 11:41:26 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-10-10 11:41:26 +0900 |
commit | 2293547d9b59e0641e26837500986e78f9ba891b (patch) | |
tree | 073df99730375f376ef926ace122a08dff0c9203 /range.c | |
parent | afb95d1004676f71beb0dab389b19695728726e5 (diff) |
Update iteration step in step_i_iter
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 16 |
1 files changed, 6 insertions, 10 deletions
@@ -308,7 +308,7 @@ range_each_func(VALUE range, int (*func)(VALUE, VALUE), VALUE arg) } } -static VALUE* +static bool step_i_iter(VALUE arg) { VALUE *iter = (VALUE *)arg; @@ -319,17 +319,16 @@ step_i_iter(VALUE arg) else { iter[0] = rb_funcall(iter[0], '-', 1, INT2FIX(1)); } - return iter; + if (iter[0] != INT2FIX(0)) return false; + iter[0] = iter[1]; + return true; } static int sym_step_i(VALUE i, VALUE arg) { - VALUE *iter = step_i_iter(arg); - - if (iter[0] == INT2FIX(0)) { + if (step_i_iter(arg)) { rb_yield(rb_str_intern(i)); - iter[0] = iter[1]; } return 0; } @@ -337,11 +336,8 @@ sym_step_i(VALUE i, VALUE arg) static int step_i(VALUE i, VALUE arg) { - VALUE *iter = step_i_iter(arg); - - if (iter[0] == INT2FIX(0)) { + if (step_i_iter(arg)) { rb_yield(i); - iter[0] = iter[1]; } return 0; } |