From: Kouhei Sutou Date: 2008-11-09T13:37:39+09:00 Subject: [ruby-dev:37045] super dynamic class definition causes infinite loop 須藤です。 以下のスクリプトの2回目のdefined_class.newで無限ループになっ てしまいます。 --- def define_class(parent=nil) Class.new(parent || Object) do def initialize super end end end defined_class = define_class p defined_class.new define_class(defined_class) p defined_class.new --- % /tmp/local/bin/ruby -v /tmp/a.rb ruby 1.9.0 (2008-11-09 revision 20163) [x86_64-linux] #<#:0x00000000ef6640> /tmp/a.rb:4:in `initialize': stack level too deep (SystemStackError) from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' ... 8716 levels... from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:4:in `initialize' from /tmp/a.rb:13:in `new' from /tmp/a.rb:13:in `
'