From 5353b8555cac47f1615899e5622acb411a501eab Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 15 Jun 2012 22:57:11 +0900 Subject: exception jump should not cross mrb_funcall border; close #276 --- src/vm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vm.c b/src/vm.c index 32d2a6a24..826cdafef 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1013,6 +1013,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) while (ci[0].ridx == ci[-1].ridx) { cipop(mrb); ci = mrb->ci; + if (ci->acc < 0) { + mrb->jmp = prev_jmp; + longjmp(*(jmp_buf*)mrb->jmp, 1); + } while (eidx > mrb->ci->eidx) { ecall(mrb, --eidx); } -- cgit v1.2.3