summaryrefslogtreecommitdiff
path: root/src/array.c
diff options
context:
space:
mode:
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)); \
} \