aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2021-07-13 00:19:04 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2021-07-13 15:45:48 +0100
commite4c04db9e46928395973dbf3ecfe1990f0daf708 (patch)
tree582aa9b655a8fe1e930dab1e605a42d564457728
parentebcd4fabd87d88576b319ad1c30b7ae4679d9f90 (diff)
downloadwaffle-e4c04db9e46928395973dbf3ecfe1990f0daf708.tar.gz
core: use Wpointer-arith safe container_of
Copy Wpointer-arith safe implementation from mesa and toggle the warning in the meson build. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
-rw-r--r--meson.build1
-rw-r--r--src/waffle/core/wcore_util.h6
2 files changed, 3 insertions, 4 deletions
diff --git a/meson.build b/meson.build
index acdfc20..8253d05 100644
--- a/meson.build
+++ b/meson.build
@@ -213,6 +213,7 @@ if cc.get_argument_syntax() == 'gcc'
'-Werror=incompatible-pointer-types',
'-Werror=int-conversion',
'-Werror=missing-prototypes', # TODO: breaks on MacOS?
+ '-Werror=pointer-arith',
'-Werror=undef',
]),
language : ['c', 'cpp'],
diff --git a/src/waffle/core/wcore_util.h b/src/waffle/core/wcore_util.h
index f417583..a8ba428 100644
--- a/src/waffle/core/wcore_util.h
+++ b/src/waffle/core/wcore_util.h
@@ -33,10 +33,8 @@
extern "C" {
#endif
-#define container_of(ptr, type, member) ({ \
- const __typeof__(((type *)0)->member ) *__mptr = (ptr); \
- (type*)((void*)__mptr - offsetof(type, member)); \
- })
+#define container_of(ptr, type, member) \
+ (type*)((uint8_t *)ptr - offsetof(type, member))
/// @brief Safe downcast using container_of().
///