diff options
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 24 |
1 files changed, 8 insertions, 16 deletions
@@ -762,9 +762,9 @@ enum_sort_by(VALUE obj) } static VALUE -all_iter_i(VALUE i, VALUE *memo) +all_i(VALUE i, VALUE *memo) { - if (!RTEST(rb_yield(i))) { + if (!RTEST(i)) { *memo = Qfalse; rb_iter_break(); } @@ -772,13 +772,9 @@ all_iter_i(VALUE i, VALUE *memo) } static VALUE -all_i(VALUE i, VALUE *memo) +all_iter_i(VALUE i, VALUE *memo) { - if (!RTEST(i)) { - *memo = Qfalse; - rb_iter_break(); - } - return Qnil; + return all_i(rb_yield(i), memo); } /* @@ -808,9 +804,9 @@ enum_all(VALUE obj) } static VALUE -any_iter_i(VALUE i, VALUE *memo) +any_i(VALUE i, VALUE *memo) { - if (RTEST(rb_yield(i))) { + if (RTEST(i)) { *memo = Qtrue; rb_iter_break(); } @@ -818,13 +814,9 @@ any_iter_i(VALUE i, VALUE *memo) } static VALUE -any_i(VALUE i, VALUE *memo) +any_iter_i(VALUE i, VALUE *memo) { - if (RTEST(i)) { - *memo = Qtrue; - rb_iter_break(); - } - return Qnil; + return any_i(rb_yield(i), memo); } /* |