From ec30a3b1716fa33a1769bc45ab01164711c0dfd9 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 13 Sep 2019 21:52:17 +0200 Subject: [PATCH] Include stddef.h in zend_portability.h for offsetof() macro This makes sure that we use compiler builtins when they are available and thus avoid ubsan warnings in clang. And also reindent the fallback implementation. --- Zend/zend_portability.h | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index 978f25bbfb..1e549d300b 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -55,6 +55,7 @@ #endif #include +#include #ifdef HAVE_DLFCN_H # include @@ -327,24 +328,19 @@ char *alloca(); #ifndef XtOffsetOf # if defined(CRAY) || (defined(__ARMCC_VERSION) && !defined(LINUX)) -# ifdef __STDC__ -# define XtOffset(p_type, field) _Offsetof(p_type, field) -# else -# ifdef CRAY2 -# define XtOffset(p_type, field) \ - (sizeof(int)*((unsigned int)&(((p_type)NULL)->field))) - -# else /* !CRAY2 */ - -# define XtOffset(p_type, field) ((unsigned int)&(((p_type)NULL)->field)) - -# endif /* !CRAY2 */ -# endif /* __STDC__ */ +# ifdef __STDC__ +# define XtOffset(p_type, field) _Offsetof(p_type, field) +# else +# ifdef CRAY2 +# define XtOffset(p_type, field) \ + (sizeof(int)*((unsigned int)&(((p_type)NULL)->field))) +# else /* !CRAY2 */ +# define XtOffset(p_type, field) ((unsigned int)&(((p_type)NULL)->field)) +# endif /* !CRAY2 */ +# endif /* __STDC__ */ # else /* ! (CRAY || __arm) */ - -# define XtOffset(p_type, field) \ - ((zend_long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL))) - +# define XtOffset(p_type, field) \ + ((zend_long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL))) # endif /* !CRAY */ # ifdef offsetof -- 2.50.1