From 42084fda6f0f45f2b13aa2867bd26acf4ef9eae2 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sat, 30 Mar 2024 13:18:19 -0400 Subject: Fix indexing errors --- repl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'repl.c') diff --git a/repl.c b/repl.c index dadfe94a..b289ff39 100644 --- a/repl.c +++ b/repl.c @@ -444,11 +444,12 @@ void eval(env_t *env, ast_t *ast, void *dest) case ArrayType: { array_t arr; eval(env, index->indexed, &arr); - int64_t index_int = ast_to_int(env, index->index); + int64_t raw_index = ast_to_int(env, index->index); + int64_t index_int = raw_index; if (index_int < 1) index_int = arr.length + index_int + 1; if (index_int < 1 || index_int > arr.length) repl_err(index->index, "%ld is an invalid index for an array with length %ld", - index_int, arr.length); + raw_index, arr.length); size_t item_size = type_size(Match(indexed_t, ArrayType)->item_type); memcpy(dest, arr.data + arr.stride*(index_int-1), item_size); break; -- cgit v1.2.3