scan-build from clang version 9 complains about following:
cache.c:106:2: warning: Dereference of null pointer
nl_list_for_each_entry_safe(obj, tmp, &cache->c_items, ce_list)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/netlink/list.h:83:20: note: expanded from macro 'nl_list_for_each_entry_safe'
pos = n, n = nl_list_entry(n->member.next, typeof(*n), member))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/netlink/list.h:60:2: note: expanded from macro 'nl_list_entry'
nl_container_of(ptr, type, member)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/netlink/list.h:56:55: note: expanded from macro 'nl_container_of'
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
^~~~~
Signed-off-by: Petr Štetiar <ynezz@true.cz>
#ifndef NETLINK_LIST_H_
#define NETLINK_LIST_H_
+#include <stddef.h>
+
struct nl_list_head
{
struct nl_list_head * next;
#define nl_container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - ((size_t) &((type *)0)->member));})
+ (type *) ((char *) __mptr - (offsetof(type, member)));})
#define nl_list_entry(ptr, type, member) \
nl_container_of(ptr, type, member)