From: "H.Yamamoto" Date: 2006-02-23T13:19:52+09:00 Subject: [ruby-dev:28374] Re: ruby_1_8 broken? >山本です。 >しかし、このパッチを当てても本来のエラーは消えません。その後、下のスクリプトでも >おかしくなることがわかりました。最適化を切ると問題なく動きます。 > >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;ind_head);\ n=n->nd_next;\ コミットしときます。