]> git.lizzy.rs Git - nothing.git/commitdiff
Fix corner case for dynarray_insert_before()
authorrexim <reximkut@gmail.com>
Sun, 2 Feb 2020 18:40:38 +0000 (01:40 +0700)
committerrexim <reximkut@gmail.com>
Sun, 2 Feb 2020 18:40:38 +0000 (01:40 +0700)
Enable dynarray_push() behaviour on index == dynarray->count

src/dynarray.c

index 214e4d096326bbb1ae672624bb8f9b97bbf17d5f..7f1c3d7934365f8a6160f1497eac88c6e47de34a 100644 (file)
@@ -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,