diff options
author | Emil Velikov <emil.l.velikov@gmail.com> | 2021-07-13 00:19:04 +0100 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2021-07-13 15:45:48 +0100 |
commit | e4c04db9e46928395973dbf3ecfe1990f0daf708 (patch) | |
tree | 582aa9b655a8fe1e930dab1e605a42d564457728 | |
parent | ebcd4fabd87d88576b319ad1c30b7ae4679d9f90 (diff) | |
download | waffle-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.build | 1 | ||||
-rw-r--r-- | src/waffle/core/wcore_util.h | 6 |
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(). /// |