From c22cd46d7b5589e19cb5da080663c2244596952c Mon Sep 17 00:00:00 2001 From: ko1 Date: Tue, 25 Dec 2007 02:24:12 +0000 Subject: * compile.c (iseq_compile_each): fix stack consistency error. a patch from Yusuke ENDOH [ruby-dev:32720] * bootstraptest/test_syntax.rb: add 2 tests for above. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- compile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'compile.c') diff --git a/compile.c b/compile.c index 22f5c6260..1960a3fa9 100644 --- a/compile.c +++ b/compile.c @@ -3027,7 +3027,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) if (iseq->compile_data->redo_label) { debugs("redo in while"); #if 1 - pop_after_throw = 1; + pop_after_throw = poped; goto redo_by_throw; #else add_ensure_iseq(ret, iseq); @@ -3070,6 +3070,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) ip = ip->parent_iseq; } if (ip != 0) { + ADD_INSN(ret, nd_line(node), putnil); ADD_INSN1(ret, nd_line(node), throw, INT2FIX(level | 0x05) /* TAG_REDO */ ); -- cgit