diff --git a/ChangeLog b/ChangeLog index ae9bbb9bc6..68dbdf1599 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Mon Sep 6 07:51:42 2004 Yukihiro Matsumoto + + * eval.c (cvar_cbase): singletons should refer outer cvar scope. + [ruby-dev:24223] + + * eval.c (rb_load): should preserve previous ruby_wrapper value. + [ruby-dev:24226] + Sat Sep 4 01:14:57 2004 Yukihiro Matsumoto * eval.c (cvar_cbase): class variables cause SEGV in diff --git a/eval.c b/eval.c index ac3ff420b5..7efec7e57b 100644 --- a/eval.c +++ b/eval.c @@ -1773,7 +1773,7 @@ cvar_cbase() { NODE *cref = ruby_cref; - while (cref && cref->nd_next && FL_TEST(cref->nd_clss, FL_SINGLETON)) { + while (cref && cref->nd_next && (NIL_P(cref->nd_clss) || FL_TEST(cref->nd_clss, FL_SINGLETON))) { cref = cref->nd_next; if (!cref->nd_next) { rb_warn("class variable access from toplevel singleton method"); @@ -6411,7 +6411,7 @@ rb_load(fname, wrap) int state; volatile int prohibit_int = rb_prohibit_interrupt; volatile ID last_func; - volatile VALUE wrapper = 0; + volatile VALUE wrapper = ruby_wrapper; volatile VALUE self = ruby_top_self; NODE *volatile last_node; NODE *saved_cref = ruby_cref;