>>>>> "K" == K Kosako <kosako / sofnec.co.jp> writes: K> In this method, only values are cleared without removing dyna-var objects K> at the end of rb_yield_0, and used in the next rb_yield_0 call. K> It is not a good method because the argument "acheck" of rb_yield_0 K> is being referred to to do the decision of yield-call or proc/thread-call. I've quickly look at your patch, but do it solve this ? [0,1].each {|n| print "n: #{n}\n" case n when 1 a = 0 print "a: #{a}\n" # => 0 when 0 b = 1 print "a: #{a}\n" # => "a: " (a == nil) print "b: #{b}\n" end } Guy Decoux