summaryrefslogtreecommitdiff
path: root/src/array.c
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-07-27 11:16:56 -0400
committerAndrew Opalach <andrew@akon.city> 2026-07-27 11:16:56 -0400
commit7e9e479502e6d56057aac066b61336d0013b6a7a (patch)
tree2a9675e93abe7a7cde40eb652fb10c54eee70a2c /src/array.c
parentb7cefeccf5e179117054ae6793ef5502e2cc4e4f (diff)
downloadlibalabaster-7e9e479502e6d56057aac066b61336d0013b6a7a.tar.gz
libalabaster-7e9e479502e6d56057aac066b61336d0013b6a7a.tar.bz2
libalabaster-7e9e479502e6d56057aac066b61336d0013b6a7a.zip
array: Assert bounds
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c13
1 files changed, 9 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)); \
} \