Issue #6863 has been updated by charliesome (Charlie Somerville).


The problem with disabling Class.allocate is that we don't know if anyone is using it out in the wild. Detecting circular inheritance and throwing might be more ideal since it has a smaller breakage potential.
----------------------------------------
Bug #6863: Class#initialize infinite loops when passed self
https://bugs.ruby-lang.org/issues/6863#change-28867

Author: charliesome (Charlie Somerville)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: 2.0.0dev


=begin
The following code sends Ruby into an infinite loop:

    x = Class.allocate
    x.send :initialize, x

The problem appears to be in rb_class_initialize (object.c:1564) when Ruby attempts to call (({#inherited})) on the newly created class. The method lookup infinite loops as it tries to descend the ancestor chain.

This should probably throw a (({TypeError})) instead.
=end



-- 
http://bugs.ruby-lang.org/