From b904e87f0857eb3d1c0fdc5a8fbc693221baefab Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 25 May 2007 15:37:05 +0000 Subject: [PATCH] * eval.c (ruby_exec_internal): do nothing if no code. * compile.c (rb_iseq_compile): check node if NULL before check nd_type. [ruby-talk:252956] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ compile.c | 8 ++++---- eval.c | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd70e5d78b..0340559143 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat May 26 00:38:21 2007 Nobuyoshi Nakada + + * eval.c (ruby_exec_internal): do nothing if no code. + + * compile.c (rb_iseq_compile): check node if NULL before check + nd_type. [ruby-talk:252956] + Sat May 26 00:05:22 2007 Nobuyoshi Nakada diff --git a/compile.c b/compile.c index c539e93050..0c5770d31a 100644 --- a/compile.c +++ b/compile.c @@ -144,7 +144,10 @@ rb_iseq_compile(VALUE self, NODE *node) rb_iseq_t *iseq; GetISeqPtr(self, iseq); - if (nd_type(node) == NODE_SCOPE) { + if (node == 0) { + COMPILE(ret, "nil", node); + } + else if (nd_type(node) == NODE_SCOPE) { /* iseq type of top, method, class, block */ set_local_table(iseq, node->nd_tbl); set_arguments(iseq, ret, node->nd_args); @@ -197,9 +200,6 @@ rb_iseq_compile(VALUE self, NODE *node) else if (iseq->type == ISEQ_TYPE_DEFINED_GUARD) { COMPILE(ret, "defined guard", node); } - else if (node == 0) { - COMPILE(ret, "nil", node); - } else { rb_bug("unknown scope"); } diff --git a/eval.c b/eval.c index 571b84a57d..327cfbfd63 100644 --- a/eval.c +++ b/eval.c @@ -204,6 +204,8 @@ ruby_exec_internal(void) { int state; VALUE val; + + if (!ruby_eval_tree) return 0; PUSH_TAG(); if ((state = EXEC_TAG()) == 0) { GET_THREAD()->base_block = 0;