[#28337] constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2006/02/18
[#28338] Re: constant look up order in CVS HEAD — Tanaka Akira <akr@...17n.org> 2006/02/19

In article <1140229116.805371.31930.nullmailer@x31.priv.netlab.jp>,

[#28341] Re: constant look up order in CVS HEAD — GOTOU Yuuzou <gotoyuzo@...> 2006/02/19

In message <87lkw8xfay.fsf@m17n.org>,

[#28342] Re: constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...> 2006/02/19

まつもと ゆきひろです

[ruby-dev:28374] Re: ruby_1_8 broken?

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2006-02-23 04:19:52 UTC
List: ruby-dev #28374
>山本です。

>しかし、このパッチを当てても本来のエラーは消えません。その後、下のスクリプトでも
>おかしくなることがわかりました。最適化を切ると問題なく動きます。
>
>a = {}
>1.times do
># a["foo"] ||= proc { puts "boo" }.call # infinite loop (output "boo" forever)
>  a["foo"] ||= 3                        # unexpected throw
>end
>
>また bcc32 の最適化バグなんでしょうか・・・

bcc32 のバグではありませんでした。

Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.616.2.163
diff -u -w -b -p -r1.616.2.163 eval.c
--- eval.c	20 Feb 2006 00:55:47 -0000	1.616.2.163
+++ eval.c	23 Feb 2006 04:14:50 -0000
@@ -2221,7 +2221,7 @@ copy_node_scope(node, rval)
 	if (argc > 0) {\
 	    int i;\
 	    n = anode;\
-	    argv = TMP_ALLOC(argc);\
+	    argv = TMP_ALLOC(argc+extra);\
 	    for (i=0;i<argc;i++) {\
 		argv[i] = rb_eval(self,n->nd_head);\
 		n=n->nd_next;\

コミットしときます。


In This Thread