diff options
Diffstat (limited to 'libguile/continuations.c')
-rw-r--r-- | libguile/continuations.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libguile/continuations.c b/libguile/continuations.c index 8dca62e2d..7cc3cea10 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -180,10 +180,13 @@ scm_i_continuation_to_frame (SCM continuation, struct scm_frame *frame) if (scm_is_true (cont->vm_cont)) { struct scm_vm_cont *data = SCM_VM_CONT_DATA (cont->vm_cont); + union scm_vm_stack_element *stack_top; + /* FIXME vm_cont should hold fp/sp offsets */ + stack_top = data->stack_bottom + data->stack_size; frame->stack_holder = data; - frame->fp_offset = (data->fp + data->reloc) - data->stack_base; - frame->sp_offset = (data->sp + data->reloc) - data->stack_base; + frame->fp_offset = stack_top - (data->fp + data->reloc); + frame->sp_offset = stack_top - (data->sp + data->reloc); frame->ip = data->ra; return 1; |