# HG changeset patch # User Mike Becker # Date 1632761837 -7200 # Node ID 003aa0a78e1e6a569124205353b8dd46ed290180 # Parent 9a5adedd6de6828624bf2e52198fdfa341b08e82 fix mixed up cases in cx_ll_at() diff -r 9a5adedd6de6 -r 003aa0a78e1e src/linked_list.c --- a/src/linked_list.c Mon Sep 27 18:50:07 2021 +0200 +++ b/src/linked_list.c Mon Sep 27 18:57:17 2021 +0200 @@ -152,12 +152,14 @@ static void *cx_ll_at(cx_list_s *list, size_t index) { cx_linked_list *ll = (cx_linked_list *) list; struct cx_linked_list_node *node; - if (index > list->size / 2) { + if (index >= list->size) { + node = NULL; + } else if (index > list->size / 2) { + node = cx_linked_list_at(ll->end, list->size, CX_LL_LOC_PREV, index); + } else { node = cx_linked_list_at(ll->begin, 0, CX_LL_LOC_NEXT, index); - } else { - node = cx_linked_list_at(ll->end, list->size, CX_LL_LOC_PREV, index); } - return &node->payload; + return node == NULL ? NULL : &node->payload; } static size_t cx_ll_find(cx_list_s *list, void *elem) {