diff --git a/ChangeLog b/ChangeLog index 1d74783cb9..25354e3ad5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Oct 29 23:01:18 2013 Masaki Matsushita + + * array.c (rb_ary_zip): some refactoring. + Tue Oct 29 22:11:37 2013 Masaki Matsushita * array.c (rb_ary_uniq_bang): use st_foreach() instead of for loop. diff --git a/array.c b/array.c index 19878f0c40..5e122a22f9 100644 --- a/array.c +++ b/array.c @@ -3217,44 +3217,51 @@ take_items(VALUE obj, long n) static VALUE rb_ary_zip(int argc, VALUE *argv, VALUE ary) { - int i, j, block_given, arity = 0; - long len; + int i, j; + long len = RARRAY_LEN(ary); VALUE result = Qnil; - len = RARRAY_LEN(ary); for (i=0; i 1 && argc+1 < 0x100) { - VALUE *tmp = ALLOCA_N(VALUE, argc+1); + if (arity > 1 && argc+1 < 0x100) { + VALUE *tmp = ALLOCA_N(VALUE, argc+1); - for (i=0; i