diff options
Diffstat (limited to 'libguile/continuations.c')
-rw-r--r-- | libguile/continuations.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libguile/continuations.c b/libguile/continuations.c index f28d59afc..62a9b7f1a 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -179,11 +179,15 @@ scm_i_continuation_to_frame (SCM continuation) if (scm_is_true (cont->vm_cont)) { + struct scm_frame frame; struct scm_vm_cont *data = SCM_VM_CONT_DATA (cont->vm_cont); - return scm_c_make_frame (SCM_VM_FRAME_KIND_CONT, data, - (data->fp + data->reloc) - data->stack_base, - (data->sp + data->reloc) - data->stack_base, - data->ra); + + 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.ip = data->ra; + + return scm_c_make_frame (SCM_VM_FRAME_KIND_CONT, &frame); } else return SCM_BOOL_F; |