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

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-05-21 09:00:30 +09:00
parent abbb8c5c31
commit a6f26514a5
+9 -1
View File
@@ -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 */