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

File type-error-on-class-inheriting-from-self.patch added

I've attached a patch that raises a TypeError with the message "circular inheritance detected" when it detects a class either inheriting from itself, or a class inheriting from a subclass of itself.
----------------------------------------
Bug #6863: Class#initialize infinite loops when passed self
https://bugs.ruby-lang.org/issues/6863#change-28830

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/