We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 3d5db5e commit 29fa245Copy full SHA for 29fa245
1 file changed
core/eval.c
@@ -695,15 +695,19 @@ obj_p call(obj_p fn, i64_t arity) {
695
vm->rs[vm->rp].fn = saved_fn;
696
vm->rs[vm->rp].fp = saved_fp;
697
vm->rs[vm->rp].ip = -1; // External call marker
698
+ i64_t saved_rp = vm->rp;
699
vm->rp++;
700
701
// Execute bytecode
702
res = vm_eval(fn);
703
704
// Pop frame and restore context
- vm->rp--;
705
- vm->fn = saved_fn;
706
- vm->fp = saved_fp;
+ // Only pop if vm_error_unwind hasn't already unwound past our frame
+ if (vm->rp > saved_rp) {
707
+ vm->rp--;
708
+ vm->fn = saved_fn;
709
+ vm->fp = saved_fp;
710
+ }
711
712
return res;
713
}
0 commit comments