diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index 313a577eb..39dcb9d3b 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -1069,7 +1069,7 @@ VM_DEFINE_INSTRUCTION (return_values, "return/values", 1, -1, -1) *++sp = stack_base[1]; /* Finally set new stack_base */ - NULLSTACK (stack_base - sp); + NULLSTACK (stack_base - sp + nvalues + 1); stack_base = SCM_FRAME_UPPER_ADDRESS (fp) - 1; } else diff --git a/testsuite/t-values.scm b/testsuite/t-values.scm index 565f64e07..f4c0516a3 100644 --- a/testsuite/t-values.scm +++ b/testsuite/t-values.scm @@ -5,5 +5,9 @@ ;; the start-stack forces a bounce through the interpreter (call-with-values (lambda () (start-stack 'foo (values 1 2))) + list) + + (call-with-values + (lambda () (apply values '(1))) list))