* compile.c (iseq_compile_each): fix around yield arguments

(with NODE_ARGSCAT).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2007-06-06 01:51:45 +00:00
parent b244c0dd3a
commit 9a524fad38
2 changed files with 8 additions and 7 deletions

View File

@ -1,3 +1,8 @@
Wed Jun 6 10:50:01 2007 Koichi Sasada <ko1@atdot.net>
* compile.c (iseq_compile_each): fix around yield arguments
(with NODE_ARGSCAT).
Wed Jun 6 02:50:53 2007 Koichi Sasada <ko1@atdot.net>
* cont.c (rb_fiber_start): clear th->tag and check error to fix

View File

@ -3762,11 +3762,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
if (node->nd_head) {
if (nd_type(node->nd_head) == NODE_ARRAY) {
NODE *p;
for (argc = 0, p = node->nd_head; p;
p = p->nd_next, argc++) {
/* count argc */
}
argc = node->nd_head->nd_alen;
compile_array(iseq, args, node->nd_head, Qfalse);
POP_ELEMENT(args);
debugs("argc: %d\n", argc);
@ -3777,10 +3774,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
flag |= VM_CALL_ARGS_SPLAT_BIT;
}
compile_array(iseq, args, node->nd_head->nd_head,
Qfalse);
argc = node->nd_head->nd_head->nd_alen + 1;
compile_array(iseq, args, node->nd_head->nd_head, Qfalse);
POP_ELEMENT(args);
argc = LIST_SIZE(args) + 1;
COMPILE(args, "args(cat: splat)",
node->nd_head->nd_body);