ruby-changes:22613
From: nobu <ko1@a...>
Date: Fri, 17 Feb 2012 15:21:06 +0900 (JST)
Subject: [ruby-changes:22613] nobu:r34662 (trunk): * enum.c (enum_each_slice): arrays to be yielded can be newly
nobu 2012-02-17 15:20:56 +0900 (Fri, 17 Feb 2012) New Revision: 34662 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34662 Log: * enum.c (enum_each_slice): arrays to be yielded can be newly created in the block. Modified files: trunk/ChangeLog trunk/enum.c Index: ChangeLog =================================================================== --- ChangeLog (revision 34661) +++ ChangeLog (revision 34662) @@ -1,5 +1,8 @@ -Fri Feb 17 13:24:43 2012 Nobuyoshi Nakada <nobu@r...> +Fri Feb 17 15:20:30 2012 Nobuyoshi Nakada <nobu@r...> + * enum.c (enum_each_slice): arrays to be yielded can be newly + created in the block. + * enum.c: move work variables to objects not to let called blocks access stack area out of scope. [Bug #5801] Index: enum.c =================================================================== --- enum.c (revision 34661) +++ enum.c (revision 34662) @@ -1828,6 +1828,7 @@ ary = rb_ary_new2(size); memo = NEW_MEMO(ary, 0, size); rb_block_call(obj, id_each, 0, 0, each_slice_i, (VALUE)memo); + ary = memo->u1.value; if (RARRAY_LEN(ary) > 0) rb_yield(ary); return Qnil; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/