break in blocks cannot cross C function boundaries; fix #2298

parent abbb8c5c
...@@ -1481,7 +1481,15 @@ RETRY_TRY_BLOCK: ...@@ -1481,7 +1481,15 @@ RETRY_TRY_BLOCK:
mrb->c = c->prev; mrb->c = c->prev;
c->prev = NULL; 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; break;
default: default:
/* cannot happen */ /* cannot happen */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment