From ebeee378569c6755a7983e39aaa639a0611d52ae Mon Sep 17 00:00:00 2001 From: rexim Date: Mon, 3 Feb 2020 01:40:38 +0700 Subject: [PATCH] Fix corner case for dynarray_insert_before() Enable dynarray_push() behaviour on index == dynarray->count --- src/dynarray.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/dynarray.c b/src/dynarray.c index 214e4d09..7f1c3d79 100644 --- a/src/dynarray.c +++ b/src/dynarray.c @@ -66,8 +66,14 @@ void dynarray_delete_at(Dynarray *dynarray, size_t index) void dynarray_insert_before(Dynarray *dynarray, size_t index, void *element) { trace_assert(dynarray); + trace_assert(dynarray->count < DYNARRAY_CAPACITY); trace_assert(element); - trace_assert(index < dynarray->count); + trace_assert(index <= dynarray->count); + + if (index == dynarray->count) { + dynarray_push(dynarray, element); + return; + } memmove( (uint8_t*) dynarray->data + (index + 1) * dynarray->element_size, -- 2.44.0