util-list.h: simplify code by removing an excess initialization
authorKonstantin Kharlamov <Hi-Angel@yandex.ru>
Mon, 22 Feb 2021 18:27:51 +0000 (21:27 +0300)
committerKonstantin Kharlamov <Hi-Angel@yandex.ru>
Tue, 2 Mar 2021 06:07:42 +0000 (09:07 +0300)
The assignment of zero is done to work around false-positives of
coverity about uninitialized variable usage. Getting rid of it inside
the macro will allow in later commit to declare a variable inside
`for-loop` rather than outside of it.

Do it by declaring a new list_first_entry_by_type helper which accepts a
type rather than a variable.

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
src/util-list.h

index 292665a..1e79008 100644 (file)
@@ -53,15 +53,17 @@ bool list_empty(const struct list *list);
 #define list_first_entry(head, pos, member)                            \
        container_of((head)->next, __typeof__(*pos), member)
 
+#define list_first_entry_by_type(head, container_type, member)         \
+       container_of((head)->next, container_type, member)
+
 #define list_for_each(pos, head, member)                               \
-       for (pos = 0, pos = list_first_entry(head, pos, member);        \
+       for (pos = list_first_entry_by_type(head, __typeof__(*pos), member); \
             &pos->member != (head);                                    \
-            pos = list_first_entry(&pos->member, pos, member))
+            pos = list_first_entry_by_type(&pos->member, __typeof__(*pos), member))
 
 #define list_for_each_safe(pos, tmp, head, member)                     \
-       for (pos = 0, tmp = 0,                                          \
-            pos = list_first_entry(head, pos, member),                 \
-            tmp = list_first_entry(&pos->member, tmp, member);         \
+       for (pos = list_first_entry_by_type(head, __typeof__(*pos), member), \
+            tmp = list_first_entry_by_type(&pos->member, __typeof__(*tmp), member); \
             &pos->member != (head);                                    \
             pos = tmp,                                                 \
-            tmp = list_first_entry(&pos->member, tmp, member))
+            tmp = list_first_entry_by_type(&pos->member, __typeof__(*tmp), member))