~ chicken-core (chicken-5) 2f7f0ec34d1083f11bff3a28bed9dd4de2c492d2
commit 2f7f0ec34d1083f11bff3a28bed9dd4de2c492d2 Author: Peter Bex <peter@more-magic.net> AuthorDate: Sun Aug 30 17:48:48 2015 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Aug 31 05:51:27 2015 +0200 Fix off-by-one error in C_values use of memmove. It moves a block of memory one "to the left", so that the original values at positions 2..n are copied over to 1..n-1. That means it needs to copy n - 2 values, not n - 1 values. Signed-off-by: felix <felix@call-with-current-continuation.org> diff --git a/runtime.c b/runtime.c index 331b6fbb..aabdf95a 100644 --- a/runtime.c +++ b/runtime.c @@ -7257,7 +7257,7 @@ void C_ccall C_values(C_word c, C_word *av) /* Check continuation whether it receives multiple values: */ if(C_block_item(k, 0) == (C_word)values_continuation) { av[ 0 ] = k; /* reuse av */ - C_memmove(av + 1, av + 2, (c - 1) * sizeof(C_word)); + C_memmove(av + 1, av + 2, (c - 2) * sizeof(C_word)); C_do_apply(c - 1, av); }Trap