diff options
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 7fc549970..71b3dfd5a 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -788,8 +788,12 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume) SYNC_IP (); scm_vm_intrinsics.abort_to_prompt (thread, registers); - /* vm_abort should not return */ - abort (); + /* If abort_to_prompt returned, that means there were no + intervening C frames to jump over, so we just continue + directly. */ + CACHE_REGISTER (); + ABORT_CONTINUATION_HOOK (); + NEXT (0); } /* builtin-ref dst:12 idx:12 |