--- a/CHANGELOG Sun Nov 09 16:29:22 2025 +0100 +++ b/CHANGELOG Mon Nov 10 21:36:15 2025 +0100 @@ -8,6 +8,7 @@ * adds support for comparing arbitrary strings without explicit call to cx_strcast() * adds clone, union, difference, and intersection functions for CxList and CxMap * adds cxListContains() and cxMapContains() + * adds cxListReserve() and cxListShrink() * adds cxListSet() * adds cxListFirst() and cxListLast() * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), @@ -35,6 +36,8 @@ * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element * changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers * changes struct cx_array_reallocator_s by replacing the four generic data members with two specifically named members + * changes cx_array_reserve() so that it reserves exactly the requested capacity (i.e., without overallocation) + * changes all other array functions to perform smart overallocation to avoid too many subsequent allocations * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates * fixes mempool implementation not supporting NULL as argument for realloc