diff options
author | Andy Wingo <wingo@pobox.com> | 2008-11-01 18:37:48 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-11-01 18:37:48 +0100 |
commit | 9b10d0bcfd363508b833e09f70ad5fb4e74059ad (patch) | |
tree | 4504970a348d622d5f74cd2737e34f09c025dc9e /libguile/vm-i-system.c | |
parent | 42906d7406913a724aea52e4d8f087e6819ab4c6 (diff) | |
download | guile-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.c | 2 |
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 |