diff --git a/src/core/wee-infolist.c b/src/core/wee-infolist.c index b8bdf8764..8cc53e27a 100644 --- a/src/core/wee-infolist.c +++ b/src/core/wee-infolist.c @@ -314,6 +314,9 @@ infolist_new_var_time (struct t_infolist_item *item, struct t_infolist_item * infolist_next (struct t_infolist *infolist) { + if (!infolist) + return NULL; + if (!infolist->ptr_item) { infolist->ptr_item = infolist->items; @@ -332,6 +335,9 @@ infolist_next (struct t_infolist *infolist) struct t_infolist_item * infolist_prev (struct t_infolist *infolist) { + if (!infolist) + return NULL; + if (!infolist->ptr_item) { infolist->ptr_item = infolist->last_item; @@ -348,6 +354,9 @@ infolist_prev (struct t_infolist *infolist) void infolist_reset_item_cursor (struct t_infolist *infolist) { + if (!infolist) + return; + infolist->ptr_item = NULL; } diff --git a/tests/unit/core/test-core-infolist.cpp b/tests/unit/core/test-core-infolist.cpp index dc2eb3605..b8e827eb0 100644 --- a/tests/unit/core/test-core-infolist.cpp +++ b/tests/unit/core/test-core-infolist.cpp @@ -314,6 +314,10 @@ TEST(CoreInfolist, Move) POINTERS_EQUAL(NULL, infolist->ptr_item); + infolist_next (NULL); + infolist_prev (NULL); + infolist_reset_item_cursor (NULL); + /* move to first item in infolist */ POINTERS_EQUAL(infolist->items, infolist_next (infolist)); POINTERS_EQUAL(infolist->items, infolist->ptr_item);