~ 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