vm.c: CINFO_SKIP should not be called with prev_jmp == NULL

We have added assertion to ensure.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2023-12-11 23:34:38 +09:00
parent 89d4e8c851
commit ae8dcb82ba
+3 -1
View File
@@ -2228,7 +2228,8 @@ RETRY_TRY_BLOCK:
while ((ch = catch_handler_find(mrb, ci, ci->pc, MRB_CATCH_FILTER_ALL)) == NULL) {
if (ci != mrb->c->cibase) {
ci = cipop(mrb);
if (ci[1].cci == CINFO_SKIP && prev_jmp) {
if (ci[1].cci == CINFO_SKIP) {
mrb_assert(prev_jmp != NULL);
mrb->jmp = prev_jmp;
MRB_THROW(prev_jmp);
}
@@ -2380,6 +2381,7 @@ RETRY_TRY_BLOCK:
}
cipop(mrb);
if (mrb->c->ci[1].cci != CINFO_NONE) {
mrb_assert(prev_jmp != NULL);
mrb->exc = (struct RObject*)break_new(mrb, RBREAK_TAG_BREAK, ci, v);
mrb_gc_arena_restore(mrb, ai);
mrb->c->vmexec = FALSE;