From 9b10d0bcfd363508b833e09f70ad5fb4e74059ad Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 1 Nov 2008 18:37:48 +0100 Subject: [PATCH] fix for (apply values '(1)) * libguile/vm-i-system.c (return/values): In the multiple-values-to-a-single-value-continuation (or MV but where N=1), null out the correct number of values from the stack. Fixes aborts on (apply values '(1)). * testsuite/t-values.scm (call-with-values): Add a test. --- libguile/vm-i-system.c | 2 +- testsuite/t-values.scm | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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)) -- 2.20.1