summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--eval.c4
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 <matz@ruby-lang.org>
+
+ * 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 <matz@ruby-lang.org>
* 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;