Index: src/ruby/trunk/enumerator.c =================================================================== --- src/ruby/trunk/enumerator.c (revision 22586) +++ src/ruby/trunk/enumerator.c (working copy) @@ -397,11 +397,13 @@ enumerator_each(VALUE obj) } static VALUE -enumerator_with_index_i(VALUE val, VALUE *memo) +enumerator_with_index_i(VALUE val, VALUE *memo, int argc, VALUE *argv) { - val = rb_yield_values(2, val, INT2FIX(*memo)); + VALUE ary; + + ary = rb_ary_push(rb_ary_new4(argc, argv), INT2FIX(*memo)); ++*memo; - return val; + return rb_yield_values2(RARRAY_LEN(ary), RARRAY_PTR(ary)); } /*