~ 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