なかだです。

$ ruby -e 'Class.new(:String)'
-e:1: [BUG] Segmentation fault
ruby 1.8.1 (2003-12-19) [i386-linux]

だそうです。

eval.c:superclass()と条件は同じだろうと思うので、共通の関数にし
たほうがいいかも知れませんが、どうしましょうか。


* object.c (rb_class_initialize): superclass must be an
  ordinary class.

Index: object.c =================================================================== RCS file: /cvs/ruby/src/ruby/object.c,v retrieving revision 1.131 diff -u -2 -p -r1.131 object.c --- object.c 19 Dec 2003 15:18:09 -0000 1.131 +++ object.c 20 Dec 2003 02:48:53 -0000 @@ -729,4 +729,13 @@ rb_class_initialize(argc, argv, klass) super = rb_cObject; } + else { + if (TYPE(super) != T_CLASS) { + rb_raise(rb_eTypeError, "superclass must be a Class (%s given)", + rb_obj_classname(super)); + } + if (RBASIC(super)->flags & FL_SINGLETON) { + rb_raise(rb_eTypeError, "can't make subclass of virtual class"); + } + } RCLASS(klass)->super = super; rb_make_metaclass(klass, RBASIC(super)->klass);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦