summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-03 04:52:48 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-03 04:52:48 +0000
commit92d6ce2e8de5100b3aafbe7c51702fbe53e9f71e (patch)
tree333b7bb1c40288d14c43a2c98030d575557100fe /eval.c
parent31c1ebc6b5fc56fcf3ecc093ddca12005c64e17e (diff)
------------------------------------------------------------------------
r15996 | nobu | 2008-04-14 12:52:27 +0900 (Mon, 14 Apr 2008) | 2 lines * gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350] ------------------------------------------------------------------------ ------------------------------------------------------------------------ r17036 | nobu | 2008-06-09 09:54:23 +0900 (Mon, 09 Jun 2008) | 2 lines * include/ruby/intern.h (Init_stack): make to call ruby_init_stack. ------------------------------------------------------------------------ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index ce63b8df03..5a02f813e7 100644
--- a/eval.c
+++ b/eval.c
@@ -656,7 +656,7 @@ rb_export_method(klass, name, noex)
ID noex;
{
NODE *body;
- VALUE origin;
+ VALUE origin = 0;
if (klass == rb_cObject) {
rb_secure(4);
@@ -2405,6 +2405,7 @@ is_defined(self, node, buf)
char *buf;
{
VALUE val; /* OK */
+ volatile VALUE vval;
int state;
again:
@@ -2434,13 +2435,14 @@ is_defined(self, node, buf)
case NODE_CALL:
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
- val = rb_eval(self, node->nd_recv);
+ vval = rb_eval(self, node->nd_recv);
}
POP_TAG();
if (state) {
ruby_errinfo = Qnil;
return 0;
}
+ val = vval;
check_bound:
{
int call = nd_type(node)==NODE_CALL;
@@ -2536,7 +2538,7 @@ is_defined(self, node, buf)
case NODE_COLON2:
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
- val = rb_eval(self, node->nd_head);
+ vval = rb_eval(self, node->nd_head);
}
POP_TAG();
if (state) {
@@ -2544,6 +2546,7 @@ is_defined(self, node, buf)
return 0;
}
else {
+ val = vval;
switch (TYPE(val)) {
case T_CLASS:
case T_MODULE: