~ chicken-core (chicken-5) c150029e0dbdc70a4c8246a36b0df5e8ce910959
commit c150029e0dbdc70a4c8246a36b0df5e8ce910959 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Jul 20 22:51:56 2015 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Jul 20 22:51:56 2015 +0200 corrected counts + offsets in C_apply diff --git a/runtime.c b/runtime.c index 1d794946..77b95aea 100644 --- a/runtime.c +++ b/runtime.c @@ -5959,7 +5959,7 @@ void C_ccall C_apply(C_word c, C_word *av) k = av[ 1 ], fn = av[ 2 ]; int i, n = c - 3; - int m = n; + int m = n - 1; C_word x, skip, *ptr; if(c < 4) C_bad_min_argc(c, 4); @@ -5972,8 +5972,8 @@ void C_ccall C_apply(C_word c, C_word *av) *(ptr++) = k; if(n > 1) { - C_memcpy(ptr, av + 3, (n - 1) * sizeof(C_word)); - ptr += n - 1; + C_memcpy(ptr, av + 3, m * sizeof(C_word)); + ptr += m; } x = av[ c - 1 ]; @@ -5992,7 +5992,7 @@ void C_ccall C_apply(C_word c, C_word *av) } C_temporary_stack = C_temporary_stack_bottom; - ((C_proc)(void *)C_block_item(fn, 0))(m + 1, C_temporary_stack_limit); + ((C_proc)(void *)C_block_item(fn, 0))(m + 2, C_temporary_stack_limit); }Trap