diff options
| -rw-r--r-- | src/array.c | 2 | ||||
| -rw-r--r-- | tests/array.c | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/array.c b/src/array.c index bde54a8..d810836 100644 --- a/src/array.c +++ b/src/array.c @@ -42,7 +42,7 @@ #define al_array_insert(array, i, item) \ do { \ al_array_reserve(array, (array).count + 1); \ - if (i != (array).count - 1) { \ + if (i != (array).count) { \ al_memmove(al_array_offset(array, i + 1), al_array_offset(array, i), \ al_array_item_size(array) * ((array).count - i)); \ } \ diff --git a/tests/array.c b/tests/array.c index 2c7746f..ddcc0d8 100644 --- a/tests/array.c +++ b/tests/array.c @@ -272,7 +272,7 @@ static bool array_test_insert(void) struct test_t x = { .d = 5 }; struct test_t y = { .d = 2 }; - struct test_t z = { .d = 6 }; + struct test_t z = { .d = 5464123 }; al_array_push(objects, (struct test_t){ .d = 7 }); al_array_push(objects, (struct test_t){ .d = 9 }); @@ -298,6 +298,14 @@ static bool array_test_insert(void) al_array_free(objects); + al_array_init(objects); + al_array_push(objects, z); + al_array_insert(objects, 0, x); + AL_TEST_EQ(al_array_at(objects, 0).d, x.d, u32); + AL_TEST_EQ(al_array_at(objects, 1).d, z.d, u32); + + al_array_free(objects); + AL_TEST_END(); } |