--- a/src/list.c Fri Oct 10 19:40:24 2025 +0200 +++ b/src/list.c Sat Oct 11 11:55:46 2025 +0200 @@ -38,10 +38,18 @@ const void *l, const void *r ) { + // l and r are guaranteed to be non-NULL pointing to the list's memory void *const *lptr = l; void *const *rptr = r; - const void *left = lptr == NULL ? NULL : *lptr; - const void *right = rptr == NULL ? NULL : *rptr; + const void *left = *lptr; + const void *right = *rptr; + if (left == NULL) { + // NULL is smaller than any value except NULL + return right == NULL ? 0 : -1; + } else if (right == NULL) { + // any value is larger than NULL + return 1; + } return cx_pl_cmpfunc_impl(left, right); } @@ -297,7 +305,10 @@ for (; i < n; i++) { if (NULL == invoke_list_func( insert_element, list, index + i, - src + (i * elem_size))) return i; + src + i * elem_size) + ) { + return i; // LCOV_EXCL_LINE + } } return i; } @@ -336,7 +347,9 @@ si++; inserted++; } - if (inserted == n) return inserted; + if (inserted == n) { + return inserted; + } } continue; } @@ -357,17 +370,22 @@ // insert the elements at location si if (ins == 1) { - if (NULL == invoke_list_func( - insert_element, list, di, src)) return inserted; + if (NULL == invoke_list_func(insert_element, list, di, src)) { + return inserted; // LCOV_EXCL_LINE + } } else { size_t r = invoke_list_func(insert_array, list, di, src, ins); - if (r < ins) return inserted + r; + if (r < ins) { + return inserted + r; // LCOV_EXCL_LINE + } } inserted += ins; di += ins; // everything inserted? - if (inserted == n) return inserted; + if (inserted == n) { + return inserted; + } src = next; } @@ -399,7 +417,7 @@ size_t elem_size = list->collection.elem_size; size_t list_size = list->collection.size; void *tmp = cxMallocDefault(elem_size * list_size); - if (tmp == NULL) abort(); + if (tmp == NULL) abort(); // LCOV_EXCL_LINE // copy elements from source array char *loc = tmp; @@ -432,7 +450,7 @@ size_t elem_size = list->collection.elem_size; void *tmp = cxMallocDefault(elem_size); - if (tmp == NULL) return 1; + if (tmp == NULL) return 1; // LCOV_EXCL_LINE void *ip = invoke_list_func(at, list, i); void *jp = invoke_list_func(at, list, j);