[PATCH 1/3] include: Define FIELD_OFFSET to the standard offsetof macro
Amine Khaldi
amine.khaldi at reactos.org
Mon Dec 10 12:37:11 CST 2012
This prevents the undefined behavior (null pointer dereference)
diagnostics (clang with ubsan checks for example).
---
include/winnt.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/winnt.h b/include/winnt.h
index 207adaa..a3b996a 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -746,8 +746,12 @@ typedef struct _MEMORY_BASIC_INFORMATION
#define UNICODE_STRING_MAX_CHARS 32767
+#if defined(__GNUC__) || defined(__clang__)
+#define FIELD_OFFSET(type, field) offsetof(type, field)
+#else
#define FIELD_OFFSET(type, field) \
((LONG)(INT_PTR)&(((type *)0)->field))
+#endif
#define CONTAINING_RECORD(address, type, field) \
((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
--
1.8.0
More information about the wine-patches
mailing list