diff options
-rw-r--r-- | libguile/continuations.c | 4 | ||||
-rw-r--r-- | libguile/vm.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/libguile/continuations.c b/libguile/continuations.c index 2b10126cf..dc1456985 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -121,8 +121,6 @@ scm_make_continuation (int *first) continuation->root = thread->continuation_root; continuation->dframe = scm_i_last_debug_frame (); src = thread->continuation_base; - SCM_NEWSMOB (cont, scm_tc16_continuation, continuation); - #if ! SCM_STACK_GROWS_UP src -= stack_size; #endif @@ -130,6 +128,8 @@ scm_make_continuation (int *first) memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size); continuation->vm_conts = scm_vm_capture_continuations (); + SCM_NEWSMOB (cont, scm_tc16_continuation, continuation); + *first = !setjmp (continuation->jmpbuf); if (*first) { diff --git a/libguile/vm.c b/libguile/vm.c index 4314a6847..38d085c99 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -136,7 +136,7 @@ vm_cont_free (SCM obj) struct scm_vm_cont *p = SCM_VM_CONT_DATA (obj); scm_gc_free (p->stack_base, p->stack_size * sizeof (SCM), "stack-base"); - scm_gc_free (p, sizeof (struct scm_vm), "vm"); + scm_gc_free (p, sizeof (*p), "vm-cont"); return 0; } |