-/* Copyright 2001,2009-2015,2017-2019
+/* Copyright 2001,2009-2015,2017-2020
Free Software Foundation, Inc.
This file is part of Guile.
abort ();
}
- fp = vp->stack_top - fp_offset;
- sp = vp->stack_top - sp_offset;
-
if (!(flags & SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY))
{
fprintf (stderr, "guile: fatal: emergency abort to non-linear prompt\n");
/* Unwind. */
scm_dynstack_unwind (dynstack, prompt);
+ fp = vp->stack_top - fp_offset;
+ sp = vp->stack_top - sp_offset;
+
/* Continuation gets nargs+1 values: the one more is for the cont. */
sp = sp - nargs - 1;
scm_misc_error ("abort", "Abort to unknown prompt", scm_list_1 (tag));
fp = vp->stack_top - fp_offset;
- sp = vp->stack_top - sp_offset;
/* Only reify if the continuation referenced in the handler. */
if (flags & SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY)
/* Unwind. */
scm_dynstack_unwind (dynstack, prompt);
+ /* Recompute FP, as scm_dynstack_unwind may have expanded the stack. */
+ fp = vp->stack_top - fp_offset;
+ sp = vp->stack_top - sp_offset;
+
/* Continuation gets nargs+1 values: the one more is for the cont. */
sp = sp - nargs - 1;