From: "charliesome (Charlie Somerville)" Date: 2012-08-13T22:35:54+09:00 Subject: [ruby-core:47150] [ruby-trunk - Bug #6863] Class#initialize infinite loops when passed self 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/