uloop: allow passing 0 as timeout to uloop_run
[project/libubox.git] / list.h
diff --git a/list.h b/list.h
index 47ce33b..ab52acf 100644 (file)
--- a/list.h
+++ b/list.h
 #define        prefetch(x)
 
 #ifndef container_of
-#define container_of(ptr, type, member) (           \
-    (type *)( (char *)ptr - offsetof(type,member) ))
+#define container_of(ptr, type, member)                                        \
+       ({                                                              \
+               const typeof(((type *) NULL)->member) *__mptr = (ptr);  \
+               (type *) ((char *) __mptr - offsetof(type, member));    \
+       })
 #endif
 
 struct list_head {