なかだです。

  すいません、defined? が抜けてました。


Index: eval.c =================================================================== RCS file: /home/cvs/ruby/src/ruby/eval.c,v retrieving revision 1.157 diff -u -2 -p -r1.157 eval.c --- eval.c 2001/02/26 05:29:00 1.157 +++ eval.c 2001/02/27 08:11:09 @@ -1422,4 +1422,6 @@ superclass(self, node) #define ruby_cbase (RNODE(ruby_frame->cbase)->nd_clss) +#define TOPLEVEL_P(c) (NIL_P(c) || (c) == rb_cObject) +#define BASE_CLASS(c) (NIL_P(c) ? rb_cObject : (c)) static VALUE @@ -1430,5 +1432,5 @@ ev_const_defined(cref, id) NODE *cbase = cref; - while (cbase && cbase->nd_clss != rb_cObject) { + while (cbase && !TOPLEVEL_P(cbase->nd_clss)) { struct RClass *klass = RCLASS(cbase->nd_clss); @@ -1439,5 +1441,5 @@ ev_const_defined(cref, id) cbase = cbase->nd_next; } - return rb_const_defined(cref->nd_clss, id); + return rb_const_defined(BASE_CLASS(cref->nd_clss), id); } @@ -1450,5 +1452,5 @@ ev_const_get(cref, id) VALUE result; - while (cbase && cbase->nd_clss != rb_cObject) { + while (cbase && !TOPLEVEL_P(cbase->nd_clss)) { struct RClass *klass = RCLASS(cbase->nd_clss); @@ -1458,5 +1460,5 @@ ev_const_get(cref, id) cbase = cbase->nd_next; } - return rb_const_get(cref->nd_clss, id); + return rb_const_get(BASE_CLASS(cref->nd_clss), id); }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦