Allow empty lists in girara_list_foreach
Currently, girara_list_foreach
asserts that the list is not empty (list->start
in datastructures.c:382
). Yet a for-each operation on an empty list should just do nothing, not cause a critical error. (Similar to the GIRARA_LIST_FOREACH
macro, which allows an empty list.)
For example, zathura commit 5baa31b83d8c5fe5767394bbbd3084eff55bc5f4 introduces a call to girara_list_foreach
with a possibly empty list in plain_save_jumplist
, causing a failed assertion every time a file is closed.
Suggested fix:
diff --git a/girara/datastructures.c b/girara/datastructures.c
index fc21330..78e6659 100644
--- a/girara/datastructures.c
+++ b/girara/datastructures.c
@@ -379,9 +379,10 @@ girara_list_sort(girara_list_t* list, girara_compare_function_t compare)
void
girara_list_foreach(girara_list_t* list, girara_list_callback_t callback, void* data)
{
- g_return_if_fail(list && list->start && callback);
+ g_return_if_fail(list && callback);
- g_list_foreach(list->start, callback, data);
+ if (list->start)
+ g_list_foreach(list->start, callback, data);
}
static void