diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-08 08:29:58 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-08 08:29:58 +0000 |
commit | d57ab818775f37f3ee6221d4c609c7890350938c (patch) | |
tree | 2e1aa0d2410beab12cb96afbe06b28e96d141e60 /eval.c | |
parent | 998b538f77ce9e5c347ede9b4d22f50015a2914e (diff) |
* eval.c (is_defined): core dumped during instance_eval for
special constants.
* eval.c (rb_eval): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1805,6 +1805,12 @@ is_defined(self, node, buf) break; case NODE_CVAR: + if (NIL_P(ruby_cbase)) { + if (rb_cvar_defined(CLASS_OF(self), node->nd_vid)) { + return "class variable"; + } + break; + } if (!FL_TEST(ruby_cbase, FL_SINGLETON)) { if (rb_cvar_defined(ruby_cbase, node->nd_vid)) { return "class variable"; @@ -2722,6 +2728,10 @@ rb_eval(self, n) break; case NODE_CVAR: /* normal method */ + if (NIL_P(ruby_cbase)) { + result = rb_cvar_get(CLASS_OF(self), node->nd_vid); + break; + } if (!FL_TEST(ruby_cbase, FL_SINGLETON)) { result = rb_cvar_get(ruby_cbase, node->nd_vid); break; |