From 3f2c48343914d323f1ce1baa17f8cfbdfd86bdb9 Mon Sep 17 00:00:00 2001 From: Konstantin Kharlamov Date: Mon, 22 Feb 2021 21:27:51 +0300 Subject: [PATCH] util-list.h: simplify code by removing an excess initialization 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 --- src/util-list.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/util-list.h b/src/util-list.h index 292665a..1e79008 100644 --- a/src/util-list.h +++ b/src/util-list.h @@ -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)) -- 2.7.4