summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-11-01 18:37:48 +0100
committerAndy Wingo <wingo@pobox.com>2008-11-01 18:37:48 +0100
commit9b10d0bcfd363508b833e09f70ad5fb4e74059ad (patch)
tree4504970a348d622d5f74cd2737e34f09c025dc9e /libguile/vm-i-system.c
parent42906d7406913a724aea52e4d8f087e6819ab4c6 (diff)
downloadguile-9b10d0bcfd363508b833e09f70ad5fb4e74059ad.tar.gz
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.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r--libguile/vm-i-system.c2
1 files changed, 1 insertions, 1 deletions
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