summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vm.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 503d2c929..516e6e2a0 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1481,7 +1481,15 @@ RETRY_TRY_BLOCK:
mrb->c = c->prev;
c->prev = NULL;
}
- ci = mrb->c->ci = mrb->c->cibase + proc->env->cioff + 1;
+ ci = mrb->c->ci;
+ mrb->c->ci = mrb->c->cibase + proc->env->cioff + 1;
+ while (ci > mrb->c->ci) {
+ if (ci[-1].acc == CI_ACC_SKIP) {
+ mrb->c->ci = ci;
+ break;
+ }
+ ci--;
+ }
break;
default:
/* cannot happen */