From: nobu.nakada@... Date: 2003-12-20T12:01:43+09:00 Subject: [ruby-dev:22316] invalid superclass for Class#initialize なかだです。 $ 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はできる。 中田 伸悦