diff --git a/src/vm.c b/src/vm.c
index 765512a34..025b487bc 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1032,7 +1032,7 @@ RETRY_TRY_BLOCK:
mrb_callinfo *ci = mrb->c->ci;
int n, eidx = ci->eidx;
- for (n=0; n ci[-1].eidx; n++) {
+ for (n=0; nc->cibase || eidx > ci[-1].eidx); n++) {
ecall(mrb, --eidx);
ARENA_RESTORE(mrb, ai);
}