From: nobu.nakada@... Date: 2003-09-03T00:05:28+09:00 Subject: [ruby-dev:21303] [PATCH] return from proc-called block なかだです。 http://mput.dip.jp:8080/mput/?date=20030902#p01 のバグですが、 こんなところでしょうか。 * eval.c (rb_yield_0): pass return value when returned from a proc- called block. Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.530 diff -u -2 -p -r1.530 eval.c --- eval.c 2 Sep 2003 00:51:39 -0000 1.530 +++ eval.c 2 Sep 2003 15:01:27 -0000 @@ -4175,4 +4175,5 @@ rb_yield_0(val, self, klass, flags, aval case TAG_NEXT: state = 0; + case TAG_RETURN: result = prot_tag->retval; break; @@ -4209,5 +4210,10 @@ rb_yield_0(val, self, klass, flags, aval scope_vmode = old_vmode; ruby_current_node = cnode; - if (state) JUMP_TAG(state); + if (state) { + if (prot_tag->tag == PROT_PCALL && state == TAG_RETURN) { + localjump_destination(state, prot_tag->scope, prot_tag->retval); + } + JUMP_TAG(state); + } return result; } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦