From 8bc506e25825620c356a61e0db8825b669409159 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Tue, 12 Jun 2012 23:39:27 +0900 Subject: a bug in contant reference from modules --- src/variable.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/variable.c b/src/variable.c index 33cd6ba14..b8957fb6a 100644 --- a/src/variable.c +++ b/src/variable.c @@ -235,6 +235,7 @@ const_get(mrb_state *mrb, struct RClass *base, mrb_sym sym) khiter_t k; mrb_sym cm = mrb_intern(mrb, "const_missing"); + L_RETRY: while (c) { if (c->iv) { h = c->iv; @@ -250,6 +251,10 @@ const_get(mrb_state *mrb, struct RClass *base, mrb_sym sym) c = c->super; } + if (base->tt == MRB_TT_MODULE) { + c = base = mrb->object_class; + goto L_RETRY; + } mrb_raise(mrb, E_NAME_ERROR, "uninitialized constant %s", mrb_sym2name(mrb, sym)); /* not reached */ -- cgit v1.2.3