liblist-c

C type-agnostic linked-list library
git clone https://git.sinitax.com/sinitax/liblist-c
Log | Files | Refs | LICENSE | sfeed.txt

commit 2f54fc46a72f532feb3f98a4cc2cae88bbd0169f
parent f4883a69092d5a6f7ce0a66bfdcd89b6e91fd84c
Author: Louis Burda <quent.burda@gmail.com>
Date:   Fri, 25 Feb 2022 01:31:00 +0100

Ensure list_at only returns links that may be UPCAST

Diffstat:
Msrc/list.c | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/list.c b/src/list.c @@ -143,12 +143,16 @@ list_index(struct list *list, struct link *target) struct link * list_at(struct list *list, int n) { + struct link * link; + ASSERT(list != NULL); if (n >= 0) - return link_iter_fwd(list->head.next, n); + link = link_iter_fwd(list->head.next, n); else - return link_iter_bwd(&list->tail, -n); + link = link_iter_bwd(&list->tail, -n); + + return LIST_INNER(link) ? link : NULL; } struct link *