Bug #6142 ยป lazy_zip_to_a.diff
enumerator.c | ||
---|---|---|
}
|
||
static VALUE
|
||
lazy_zip_to_a(int argc, VALUE *argv, VALUE obj)
|
||
{
|
||
VALUE zip_args = rb_iv_get(obj, "zip_arguments");
|
||
long i;
|
||
if (!NIL_P(zip_args)) {
|
||
for (i = 0; i < RARRAY_LEN(zip_args); i++) {
|
||
rb_check_funcall(RARRAY_PTR(zip_args)[i], id_rewind, 0, 0);
|
||
}
|
||
}
|
||
return rb_call_super(argc, argv);
|
||
}
|
||
static VALUE
|
||
lazy_zip(int argc, VALUE *argv, VALUE obj)
|
||
{
|
||
VALUE ary;
|
||
VALUE ary, lazy;
|
||
int i;
|
||
if (rb_block_given_p()) {
|
||
... | ... | |
rb_ary_push(ary, rb_funcall(argv[i], id_lazy, 0));
|
||
}
|
||
return rb_block_call(rb_cLazy, id_new, 1, &obj, lazy_zip_func, ary);
|
||
lazy = rb_block_call(rb_cLazy, id_new, 1, &obj, lazy_zip_func, ary);
|
||
rb_iv_set(lazy, "zip_arguments", ary);
|
||
rb_define_singleton_method(lazy, "to_a", lazy_zip_to_a, -1);
|
||
rb_define_singleton_method(lazy, "force", lazy_zip_to_a, -1);
|
||
return lazy;
|
||
}
|
||
static VALUE
|