* 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
This commit is contained in:
nobu 2007-05-25 15:37:05 +00:00
Родитель a1cb9efd34
Коммит b904e87f08
3 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -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> Sat May 26 00:05:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>

Просмотреть файл

@ -144,7 +144,10 @@ rb_iseq_compile(VALUE self, NODE *node)
rb_iseq_t *iseq; rb_iseq_t *iseq;
GetISeqPtr(self, 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 */ /* iseq type of top, method, class, block */
set_local_table(iseq, node->nd_tbl); set_local_table(iseq, node->nd_tbl);
set_arguments(iseq, ret, node->nd_args); 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) { else if (iseq->type == ISEQ_TYPE_DEFINED_GUARD) {
COMPILE(ret, "defined guard", node); COMPILE(ret, "defined guard", node);
} }
else if (node == 0) {
COMPILE(ret, "nil", node);
}
else { else {
rb_bug("unknown scope"); rb_bug("unknown scope");
} }

2
eval.c
Просмотреть файл

@ -204,6 +204,8 @@ ruby_exec_internal(void)
{ {
int state; int state;
VALUE val; VALUE val;
if (!ruby_eval_tree) return 0;
PUSH_TAG(); PUSH_TAG();
if ((state = EXEC_TAG()) == 0) { if ((state = EXEC_TAG()) == 0) {
GET_THREAD()->base_block = 0; GET_THREAD()->base_block = 0;