>From 705b28563f317d27ba09776b37f68233bac9b4a1 Mon Sep 17 00:00:00 2001 From: Evan Hanson Date: Sun, 4 Oct 2015 20:09:19 +1300 Subject: [PATCH 1/2] Fix (harmless) off-by-one in C_apply_values --- runtime.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/runtime.c b/runtime.c index c981963..102fa42 100644 --- a/runtime.c +++ b/runtime.c @@ -6107,8 +6107,7 @@ void C_ccall C_apply_values(C_word c, C_word *av) C_word /* closure = av[ 0 ] */ k = av[ 1 ], - lst, - n; + lst, len, n; if(c != 3) C_bad_argc(c, 3); @@ -6117,16 +6116,17 @@ void C_ccall C_apply_values(C_word c, C_word *av) if(lst != C_SCHEME_END_OF_LIST && (C_immediatep(lst) || C_block_header(lst) != C_PAIR_TAG)) barf(C_BAD_ARGUMENT_TYPE_ERROR, "apply", lst); - /* Check continuation wether it receives multiple values: */ + /* Check whether continuation receives multiple values: */ if(C_block_item(k, 0) == (C_word)values_continuation) { C_word *av2, *ptr; - n = C_unfix(C_u_i_length(lst)) + 1; + len = C_unfix(C_u_i_length(lst)); + n = len + 1; if(!C_demand(n)) C_save_and_reclaim((void *)C_apply_values, c, av); - av2 = C_alloc(n + 1); + av2 = C_alloc(n); av2[ 0 ] = k; ptr = av2 + 1; while(!C_immediatep(lst) && C_block_header(lst) == C_PAIR_TAG) { -- 2.5.3