~ chicken-core (chicken-5) 9b92c5879bb9a5249c2561f732dc9532e3174ee9


commit 9b92c5879bb9a5249c2561f732dc9532e3174ee9
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sat Aug 22 18:16:25 2015 +0200
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Sat Aug 22 19:37:26 2015 +0200

    bugfixes in C_callback
    
    Conflicts:
            chicken.h

diff --git a/runtime.c b/runtime.c
index 449ad24d..5f535934 100644
--- a/runtime.c
+++ b/runtime.c
@@ -2060,13 +2060,13 @@ C_word C_fcall C_callback(C_word closure, int argc)
   av[ 0 ] = closure;
   av[ 1 ] = k;
   /*XXX is the order of arguments an issue? */
-  C_memcpy(av + 2, C_temporary_stack, (argc - 2) * sizeof(C_word));
+  C_memcpy(av + 2, C_temporary_stack, argc * sizeof(C_word));
   C_temporary_stack = C_temporary_stack_bottom;
   
 #ifdef HAVE_SIGSETJMP
-  if(!C_sigsetjmp(C_restart, 0)) C_do_apply(argc, av);
+  if(!C_sigsetjmp(C_restart, 0)) C_do_apply(argc + 2, av);
 #else
-  if(!C_setjmp(C_restart)) C_do_apply(argc, av);
+  if(!C_setjmp(C_restart)) C_do_apply(argc + 2, av);
 #endif
 
   serious_signal_occurred = 0;
Trap