From c14ad18ca87d34519799774a018f6d0da2df1fc2 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Thu, 18 Apr 2019 19:21:07 +0200 Subject: [PATCH] makes WF_CONTAINER_OF use typeof, if available --- lib/webfuse/core/container_of.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/webfuse/core/container_of.h b/lib/webfuse/core/container_of.h index fa51a26..4154d15 100644 --- a/lib/webfuse/core/container_of.h +++ b/lib/webfuse/core/container_of.h @@ -7,7 +7,15 @@ #include #endif +#ifdef __GNUC__ +#define WF_CONTAINER_OF(pointer, type, member) \ + ({ \ + const typeof( ((type *)0)->member ) * __member = (pointer); \ + (type *)( (char *)__member - offsetof(type, member) ); \ + }) +#else #define WF_CONTAINER_OF(pointer, type, member) \ (type *) (((char *) pointer) - offsetof(type, member)) +#endif #endif