diff --git a/ChangeLog b/ChangeLog index a65ba3871b..018b7cfc3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Aug 17 03:07:37 2007 Koichi Sasada + + * compile.c (iseq_compile_each): fix thorw insn option of next. + Fri Aug 17 01:25:23 2007 Koichi Sasada * compile.c (iseq_set_arguments), insnhelper.ci diff --git a/compile.c b/compile.c index 6f655c3bd4..e6db61718a 100644 --- a/compile.c +++ b/compile.c @@ -2961,11 +2961,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) ip = iseq; while (ip) { level = 0x8000; - if (ip->type == ISEQ_TYPE_BLOCK) { - level |= 0x4000; + if (ip->compile_data->redo_label != 0) { + /* while loop */ break; } - else if (ip->compile_data->redo_label != 0) { + else if (ip->type == ISEQ_TYPE_BLOCK) { + level |= 0x4000; break; } ip = ip->parent_iseq;