diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 572f4daac..cefa6b4bf 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -324,9 +324,12 @@ VM_NAME (scm_thread *thread) uint32_t n; SYNC_IP (); VM_ASSERT (nvals <= (UINTPTR_MAX >> 8), abort ()); - ret = scm_words ((nvals << 8) | scm_tc7_values, nvals + 1); + struct scm_values *vals = + scm_allocate_tagged (thread, sizeof (*vals) + nvals * sizeof (SCM)); + vals->tag_and_count = (nvals << 8) | scm_tc7_values; for (n = 0; n < nvals; n++) - SCM_SET_CELL_OBJECT (ret, n+1, FP_REF (first_value + n)); + vals->values[n] = FP_REF (first_value + n); + ret = scm_from_values (vals); } fp = VP->fp;