src/linked_list.c

changeset 478
599770bb6314
parent 477
73a93c7a56ae
child 480
e3be53a3354f
--- a/src/linked_list.c	Mon Dec 20 11:26:39 2021 +0100
+++ b/src/linked_list.c	Mon Dec 20 11:58:36 2021 +0100
@@ -52,9 +52,8 @@
 }
 
 void *cx_linked_list_last(void *node, ptrdiff_t loc_next) {
+    assert(node != NULL);
     assert(loc_next >= 0);
-    if (node == NULL)
-        return NULL;
 
     void *cur = node;
     void *last;
@@ -67,6 +66,7 @@
 
 void *cx_linked_list_prev(void *begin, ptrdiff_t loc_next, void *node) {
     assert(begin != NULL);
+    assert(node != NULL);
     assert(loc_next >= 0);
     if (begin == node) return NULL;
     void *cur = begin;
@@ -79,12 +79,13 @@
 }
 
 void cx_linked_list_add(void **begin, void **end, ptrdiff_t loc_prev, ptrdiff_t loc_next, void *new_node) {
+    assert(new_node != NULL);
     assert(loc_next >= 0);
     assert(CX_LL_PTR(new_node, loc_next) == NULL);
     void *last;
     if (end == NULL) {
         assert(begin != NULL);
-        last = cx_linked_list_last(*begin, loc_next);
+        last = *begin == NULL ? NULL : cx_linked_list_last(*begin, loc_next);
     } else {
         last = *end;
     }
@@ -110,13 +111,14 @@
 }
 
 void cx_linked_list_prepend(void **begin, void **end, ptrdiff_t loc_prev, ptrdiff_t loc_next, void *new_node) {
+    assert(new_node != NULL);
     assert(loc_next >= 0);
     assert(CX_LL_PTR(new_node, loc_next) == NULL);
     void *first;
     if (begin == NULL) {
         assert(end != NULL);
         assert(loc_prev >= 0);
-        first = cx_linked_list_first(*end, loc_prev);
+        first = *end == NULL ? NULL : cx_linked_list_first(*end, loc_prev);
     } else {
         first = *begin;
     }

mercurial