diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 13 |
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)); \ } \ |