summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/array.c13
-rw-r--r--tests/array.c5
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);