src/list.c

changeset 1422
8bfccb342895
parent 1419
e46406fd1b3c
child 1423
9a72258446cd
--- 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);

mercurial