From: matz@... (Yukihiro Matsumoto) Date: 2003-03-25T12:54:43+09:00 Subject: [ruby-dev:19898] Re: Proc#call parameter assignment まつもと ゆきひろです In message "[ruby-dev:19897] Proc#call parameter assignment" on 03/03/25, "NAKAMURA, Hiroshi" writes: |とあるruby 1.8.0環境で、以下のような現象が生じています。 | | f = lambda { |block-arg| | p block-arg #=> [[obj1, obj2]] | ... | } | arg = [obj1, obj2] | f.call(arg) | |debug.rbで捕まえながら見ていると、f.callの前と |lambdaの中で、[]が一つ増えてしまう時があります。 | |# 具体的には、↑の...のところでbreakして、p argとp block-argを |# したときに、[]の数が違う時がありました。 | |実際は↑のような簡単なコード片では発生しませんし、また、発生する環境でも、 |このコードを通るところで必ず発生する *というわけではない* のですが、 |起きるパターン(argとして与えるデータや呼び出し元)では、 |100%発生します。RedHat/7.3でもcygwinでも、同じパターンで発生します。 うーん、 Thu Mar 20 10:45:29 2003 Tanaka Akira * eval.c (bmcall): add volatile to avoid GC problem. が関係するような気が。これより古い1.8.0ですか?