From 7e9e479502e6d56057aac066b61336d0013b6a7a Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 27 Jul 2026 11:16:56 -0400 Subject: array: Assert bounds Signed-off-by: Andrew Opalach --- src/array.c | 13 +++++++++---- tests/array.c | 5 +++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/array.c b/src/array.c index d810836..d29aa8b 100644 --- a/src/array.c +++ b/src/array.c @@ -43,6 +43,7 @@ do { \ al_array_reserve(array, (array).count + 1); \ if (i != (array).count) { \ + al_assert((u32)i < (array).count); \ al_memmove(al_array_offset(array, i + 1), al_array_offset(array, i), \ al_array_item_size(array) * ((array).count - i)); \ } \ @@ -51,10 +52,11 @@ } while (0) #define al_array_pop(array) al_array_at(array, --(array).count) -#define al_array_pop_at(array, i, r) \ - do { \ - r = al_array_at(array, i); \ - al_array_remove_at(array, i); \ +#define al_array_pop_at(array, i, r) \ + do { \ + al_assert((u32)i < (array).count); \ + r = al_array_at(array, i); \ + al_array_remove_at(array, i); \ } while (0) #define al_array_remove_at(array, i) \ @@ -62,6 +64,7 @@ if (i == (array).count - 1) { \ (array).count--; \ } else { \ + al_assert((u32)i < (array).count); \ al_memmove(al_array_offset(array, i), al_array_offset(array, i + 1), \ al_array_item_size(array) * (--(array).count - i)); \ } \ @@ -69,7 +72,9 @@ #define al_array_remove_range(array, start, end) \ do { \ + al_assert((u32)start < (array).count); \ if (end != (array).count) { \ + al_assert((u32)end < (array).count); \ al_memmove(al_array_offset(array, start), al_array_offset(array, end), \ al_array_item_size(array) * ((array).count - end)); \ } \ diff --git a/tests/array.c b/tests/array.c index ddcc0d8..35b36e7 100644 --- a/tests/array.c +++ b/tests/array.c @@ -278,6 +278,11 @@ static bool array_test_insert(void) al_array_push(objects, (struct test_t){ .d = 9 }); al_array_push(objects, (struct test_t){ .d = 444 }); + //u32 iidx = 0; + //al_array_insert(objects, ++iidx, x); + //al_array_insert(objects, --iidx, y); + //al_array_insert(objects, ++iidx, z); + al_array_insert(objects, 1, x); al_array_insert(objects, 0, y); al_array_insert(objects, 1, z); -- cgit v1.2.3-101-g0448