X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=urcu%2Fhlist.h;fp=urcu%2Fhlist.h;h=f8624b1697406a05659f70706d72deacf5c65188;hb=169e1020838cc5b9f3df503d160ce1bf0c939b2f;hp=d2e2ec38e2304f24e8ad86c18389e7faf3154508;hpb=5bcf8326b6e13ca93429925bc38fb81c73155c54;p=userspace-rcu.git diff --git a/urcu/hlist.h b/urcu/hlist.h index d2e2ec3..f8624b1 100644 --- a/urcu/hlist.h +++ b/urcu/hlist.h @@ -103,14 +103,18 @@ void cds_hlist_del(struct cds_hlist_node *elem) entry = cds_hlist_entry(pos, __typeof__(*entry), member)) #define cds_hlist_for_each_entry_2(entry, head, member) \ - for (entry = cds_hlist_entry((head)->next, __typeof__(*entry), member); \ - &entry->member != NULL; \ - entry = cds_hlist_entry(entry->member.next, __typeof__(*entry), member)) + for (entry = ((head)->next == NULL ? NULL \ + : cds_hlist_entry((head)->next, __typeof__(*entry), member)); \ + entry != NULL; \ + entry = (entry->member.next == NULL ? NULL \ + : cds_hlist_entry(entry->member.next, __typeof__(*entry), member))) #define cds_hlist_for_each_entry_safe_2(entry, e, head, member) \ - for (entry = cds_hlist_entry((head)->next, __typeof__(*entry), member); \ - (&entry->member != NULL) && (e = cds_hlist_entry(entry->member.next, \ - __typeof__(*entry), member), 1); \ + for (entry = ((head)->next == NULL ? NULL \ + : cds_hlist_entry((head)->next, __typeof__(*entry), member)); \ + (entry != NULL) && (e = (entry->member.next == NULL ? NULL \ + : cds_hlist_entry(entry->member.next, \ + __typeof__(*entry), member)), 1); \ entry = e) #endif /* _KCOMPAT_HLIST_H */