diff options
Diffstat (limited to 'libguile/throw.c')
-rw-r--r-- | libguile/throw.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/libguile/throw.c b/libguile/throw.c index bbde5e009..773ac2783 100644 --- a/libguile/throw.c +++ b/libguile/throw.c @@ -102,14 +102,13 @@ catch (SCM tag, SCM thunk, SCM handler, SCM pre_unwind_handler) scm_c_vector_set_x (eh, 3, pre_unwind_handler); vp = scm_the_vm (); - saved_stack_depth = vp->sp - vp->stack_base; + saved_stack_depth = vp->stack_top - vp->sp; /* Push the prompt and exception handler onto the dynamic stack. */ scm_dynstack_push_prompt (dynstack, - SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY - | SCM_F_DYNSTACK_PROMPT_PUSH_NARGS, + SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY, prompt_tag, - vp->fp - vp->stack_base, + vp->stack_top - vp->fp, saved_stack_depth, vp->ip, ®isters); @@ -125,7 +124,7 @@ catch (SCM tag, SCM thunk, SCM handler, SCM pre_unwind_handler) /* FIXME: We know where the args will be on the stack; we could avoid consing them. */ - args = scm_i_prompt_pop_abort_args_x (vp); + args = scm_i_prompt_pop_abort_args_x (vp, saved_stack_depth); /* Cdr past the continuation. */ args = scm_cdr (args); |