From 0c246b5c2e0f31f349d4ec8d75a90f61b054371a Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 6 Sep 2004 01:02:10 +0000 Subject: * 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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ eval.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a28f2e1cf..ba522fd2c2 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 71c012623c..94060c8d54 100644 --- a/eval.c +++ b/eval.c @@ -1771,7 +1771,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"); @@ -6417,7 +6417,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; -- cgit v1.2.3