diff options
Diffstat (limited to 'src/wayland-util.h')
-rw-r--r-- | src/wayland-util.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/wayland-util.h b/src/wayland-util.h index 953d51a..625a2d3 100644 --- a/src/wayland-util.h +++ b/src/wayland-util.h @@ -117,9 +117,15 @@ int wl_list_length(struct wl_list *list); int wl_list_empty(struct wl_list *list); void wl_list_insert_list(struct wl_list *list, struct wl_list *other); +#ifdef __GNUC__ #define __container_of(ptr, sample, member) \ - (void *)((char *)(ptr) - \ + (typeof(sample))((char *)(ptr) - \ ((char *)&(sample)->member - (char *)(sample))) +#else +#define __container_of(ptr, sample, member) \ + (void *)((char *)(ptr) - \ + ((char *)&(sample)->member - (char *)(sample))) +#endif #define wl_list_for_each(pos, head, member) \ for (pos = 0, pos = __container_of((head)->next, pos, member); \ |