зеркало из https://github.com/github/ruby.git
* compile.c (NODE_NEXT, NODE_REDO): add dummy putnil instruction to
fix stack consistency error. [ruby-core:28172] * bootstraptest/test_jump.rb: add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
7c7a7c1205
Коммит
adfe4f3930
|
@ -1,3 +1,10 @@
|
|||
Wed Apr 21 00:26:17 2010 Yusuke Endoh <mame@tsg.ne.jp>
|
||||
|
||||
* compile.c (NODE_NEXT, NODE_REDO): add dummy putnil instruction to
|
||||
fix stack consistency error. [ruby-core:28172]
|
||||
|
||||
* bootstraptest/test_jump.rb: add a test for above.
|
||||
|
||||
Wed Apr 21 00:16:44 2010 Yusuke Endoh <mame@tsg.ne.jp>
|
||||
|
||||
* ext/zlib/zlib.c (rb_deflate_params): update buf_filled count because
|
||||
|
|
|
@ -271,3 +271,14 @@ assert_normal_exit %q{
|
|||
end
|
||||
end.call
|
||||
}
|
||||
|
||||
assert_normal_exit %q{
|
||||
while true
|
||||
begin
|
||||
raise
|
||||
next
|
||||
rescue
|
||||
end
|
||||
break
|
||||
end
|
||||
}, '[ruby-core:28172]'
|
||||
|
|
|
@ -3359,6 +3359,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
|||
ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
|
||||
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
|
||||
ADD_ADJUST_RESTORE(ret, splabel);
|
||||
if (!poped) {
|
||||
ADD_INSN(ret, nd_line(node), putnil);
|
||||
}
|
||||
}
|
||||
else if (iseq->compile_data->end_label) {
|
||||
LABEL *splabel = NEW_LABEL(0);
|
||||
|
@ -3424,6 +3427,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
|||
add_ensure_iseq(ret, iseq, 0);
|
||||
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->redo_label);
|
||||
ADD_ADJUST_RESTORE(ret, splabel);
|
||||
if (!poped) {
|
||||
ADD_INSN(ret, nd_line(node), putnil);
|
||||
}
|
||||
}
|
||||
else if (iseq->type == ISEQ_TYPE_EVAL) {
|
||||
redo_in_eval:
|
||||
|
|
Загрузка…
Ссылка в новой задаче