From 5de62ac23ddd35d027567aec9b7a023ed6698577 Mon Sep 17 00:00:00 2001 From: Cremno Date: Tue, 26 Feb 2013 02:41:32 +0100 Subject: mrb_funcall_with_block: adj. ci & sp after error see #894 / [ruby-talk:404969] --- src/vm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vm.c b/src/vm.c index e4b283849..febb4dbd2 100644 --- a/src/vm.c +++ b/src/vm.c @@ -316,8 +316,13 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr if (!mrb->jmp) { jmp_buf c_jmp; + mrb_callinfo *old_ci = mrb->ci; if (setjmp(c_jmp) != 0) { /* error */ + while (old_ci != mrb->ci) { + mrb->stack = mrb->stbase + mrb->ci->stackidx; + cipop(mrb); + } mrb->jmp = 0; return mrb_nil_value(); } -- cgit v1.2.3