aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--compile.c8
-rw-r--r--eval.c2
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
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;