~ chicken-core (chicken-5) ea2740f7707a12336955bc1aac86211be339ff44
commit ea2740f7707a12336955bc1aac86211be339ff44 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Jul 14 23:33:33 2015 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Jul 14 23:38:40 2015 +0200 corrected apply diff --git a/runtime.c b/runtime.c index a20b87e5..b0a7d6fb 100644 --- a/runtime.c +++ b/runtime.c @@ -5970,15 +5970,18 @@ void C_ccall C_apply(C_word c, C_word *av) ++m; } - C_temporary_stack -= n; + if(c > 4) { + C_temporary_stack -= n - 1; - if(C_temporary_stack < C_temporary_stack_limit) - barf(C_TOO_MANY_PARAMETERS_ERROR, "apply"); + if(C_temporary_stack < C_temporary_stack_limit) + barf(C_TOO_MANY_PARAMETERS_ERROR, "apply"); - C_memcpy(C_temporary_stack, av + 3, n * sizeof(C_word)); - --m; + C_memcpy(C_temporary_stack, av + 3, n * sizeof(C_word)); + } - ((C_proc)(void *)C_block_item(fn, 0))(m, C_temporary_stack); + C_save(k); + C_save(fn); + ((C_proc)(void *)C_block_item(fn, 0))(m + 1, C_temporary_stack); }Trap