diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-16 18:12:02 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-16 18:12:02 +0000 |
commit | 04176dc21fb74c26a12895319a86eb2c3b138f90 (patch) | |
tree | e1f9aae666cb948b001c629707762a32f75e553b | |
parent | fc466622fd220b1d907d86cdbc3f74acc11a58ca (diff) | |
download | ruby-04176dc21fb74c26a12895319a86eb2c3b138f90.tar.gz |
* compile.c (iseq_compile_each): fix thorw insn option of next.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | compile.c | 7 |
2 files changed, 8 insertions, 3 deletions
@@ -1,3 +1,7 @@ +Fri Aug 17 03:07:37 2007 Koichi Sasada <ko1@atdot.net> + + * compile.c (iseq_compile_each): fix thorw insn option of next. + Fri Aug 17 01:25:23 2007 Koichi Sasada <ko1@atdot.net> * compile.c (iseq_set_arguments), insnhelper.ci @@ -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; |