aboutsummaryrefslogtreecommitdiff
path: root/src/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/list.c')
-rw-r--r--src/list.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/list.c b/src/list.c
index 7714f5d..ea038f4 100644
--- a/src/list.c
+++ b/src/list.c
@@ -103,13 +103,17 @@ clist_iterator_has_next(iterator_t i)
return i.current != NULL;
}
-list_item_t
-clist_iterator_next(iterator_t *iterator)
+void *
+clist_iterator_next(iterator_t *i)
{
- struct list_item_t *current = iterator->current;
- iterator->current = iterator->current->next;
+ if (i == NULL || i->current == NULL)
+ return NULL;
- return current;
+ void *data = i->current->data;
+ /* `next` can be NULL */
+ i->current = i->current->next;
+
+ return data;
}
char *