diff -r 33f556a7eca6 -r f027a95d93f2 src/array_list.c --- a/src/array_list.c Mon Nov 17 22:28:04 2025 +0100 +++ b/src/array_list.c Tue Nov 18 17:36:41 2025 +0100 @@ -42,10 +42,11 @@ cx_attr_unused CxArrayReallocator *alloc ) { size_t n; + // LCOV_EXCL_START if (cx_szmul(new_capacity, elem_size, &n)) { errno = EOVERFLOW; return NULL; - } + } // LCOV_EXCL_STOP return cxReallocDefault(array, n); } @@ -66,10 +67,11 @@ ) { // check for overflow size_t n; + // LCOV_EXCL_START if (cx_szmul(new_capacity, elem_size, &n)) { errno = EOVERFLOW; return NULL; - } + } // LCOV_EXCL_STOP // retrieve the pointer to the actual allocator const CxAllocator *al = alloc->allocator; @@ -108,13 +110,11 @@ * * @param current_capacity the current capacity of the array * @param needed_capacity the required capacity of the array - * @param maximum_capacity the maximum capacity (given by the data type) * @return the new capacity */ static size_t cx_array_grow_capacity( size_t current_capacity, - size_t needed_capacity, - size_t maximum_capacity + size_t needed_capacity ) { if (current_capacity >= needed_capacity) { return current_capacity; @@ -125,12 +125,7 @@ else if (cap < 1024) alignment = 64; else if (cap < 8192) alignment = 512; else alignment = 1024; - - if (cap - 1 > maximum_capacity - alignment) { - return maximum_capacity; - } else { - return cap - (cap % alignment) + alignment; - } + return cap - (cap % alignment) + alignment; } int cx_array_reserve( @@ -288,7 +283,7 @@ const size_t newsize = oldsize < minsize ? minsize : oldsize; // reallocate if necessary - const size_t newcap = cx_array_grow_capacity(oldcap, newsize, max_size); + const size_t newcap = cx_array_grow_capacity(oldcap, newsize); if (newcap > oldcap) { // check if we need to repair the src pointer uintptr_t targetaddr = (uintptr_t) *target; @@ -381,8 +376,7 @@ const size_t old_size = *size; const size_t old_capacity = *capacity; // the necessary capacity is the worst case assumption, including duplicates - const size_t needed_capacity = cx_array_grow_capacity(old_capacity, - old_size + elem_count, SIZE_MAX); + const size_t needed_capacity = cx_array_grow_capacity(old_capacity, old_size + elem_count); // if we need more than we have, try a reallocation if (needed_capacity > old_capacity) { @@ -792,8 +786,7 @@ // guarantee enough capacity if (arl->capacity < list->collection.size + n) { - const size_t new_capacity = cx_array_grow_capacity(arl->capacity, - list->collection.size + n, SIZE_MAX); + const size_t new_capacity = cx_array_grow_capacity(arl->capacity,list->collection.size + n); if (cxReallocateArray( list->collection.allocator, &arl->data, new_capacity,