From: nobu.nakada@... Date: 2004-07-04T23:57:17+09:00 Subject: [ruby-dev:23859] arguments to Thread.start なかだです。 Thread.startの引数とブロック引数が一致しなくてもエラーにならな くなってます。1.6ではArgumentErrorになります。 $ ruby16 -e 'Thread.start(1){|a,b|p a,b}.join' -e:1: wrong # of arguments (1 for 2) (ArgumentError) from -e:1:in `join' from -e:1 $ ruby18 -e 'Thread.start(1){|a,b|p a,b}.join' 1 nil rb_yield_0()の引数を変えたときの変更洩れじゃないかと思うのです が。 * eval.c (rb_thread_yield, rb_f_catch): 4th argument to rb_yield_0() is a set of bit flags. Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.674 diff -u -2 -p -r1.674 eval.c --- eval.c 29 Jun 2004 01:31:32 -0000 1.674 +++ eval.c 4 Jul 2004 14:26:40 -0000 @@ -11471,5 +11471,5 @@ rb_thread_yield(arg, th) ruby_block->dyna_vars = ruby_dyna_vars; - return rb_yield_0(arg, 0, 0, Qtrue, Qtrue); + return rb_yield_0(arg, 0, 0, YIELD_LAMBDA_CALL, Qtrue); } @@ -12514,5 +12514,5 @@ rb_f_catch(dmy, tag) PUSH_TAG(tag); if ((state = EXEC_TAG()) == 0) { - val = rb_yield_0(tag, 0, 0, Qfalse, Qfalse); + val = rb_yield_0(tag, 0, 0, 0, Qfalse); } else if (state == TAG_THROW && tag == prot_tag->dst) { -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦