>>>>> "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