diff --git a/src/conf.h b/src/conf.h index b4c27943..98c49441 100644 --- a/src/conf.h +++ b/src/conf.h @@ -78,8 +78,9 @@ ACC_COMPILE_TIME_ASSERT_HEADER(-1 == ~0) // two's complement - see http://wg21.l ACC_COMPILE_TIME_ASSERT_HEADER(0u-1 == ~0u) // two's complement - see http://wg21.link/P0907R4 ACC_COMPILE_TIME_ASSERT_HEADER((1u << 31) << 1 == 0) ACC_COMPILE_TIME_ASSERT_HEADER(((int)(1u << 31)) >> 31 == -1) // arithmetic right shift +ACC_COMPILE_TIME_ASSERT_HEADER((-1) >> 31 == -1) // arithmetic right shift ACC_COMPILE_TIME_ASSERT_HEADER(CHAR_MAX == 255) // -funsigned-char -ACC_COMPILE_TIME_ASSERT_HEADER((char)(-1) > 0) // -funsigned-char +ACC_COMPILE_TIME_ASSERT_HEADER((char)(-1) == 255) // -funsigned-char // enable/disable some warnings // Some non-GLIBC toolchains do not use 'nullptr' everywhere when C++: @@ -88,6 +89,8 @@ ACC_COMPILE_TIME_ASSERT_HEADER((char)(-1) > 0) // -funsigned-char // 51:32: error: zero as null pointer constant #if (ACC_CC_GNUC >= 0x040700) && defined(__GLIBC__) # pragma GCC diagnostic error "-Wzero-as-null-pointer-constant" +#elif (ACC_CC_CLANG >= 0x050000ul) +# pragma clang diagnostic error "-Wzero-as-null-pointer-constant" #endif #if (ACC_CC_MSC) @@ -325,7 +328,7 @@ inline void NO_fprintf(FILE *, const char *, ...) {} typedef a acc_tmp_a_t; typedef b acc_tmp_b_t; \ __packed_struct(acc_tmp_t) acc_tmp_b_t x; acc_tmp_a_t y; acc_tmp_b_t z; __packed_struct_end() \ COMPILE_TIME_ASSERT(sizeof(struct acc_tmp_t) == 2*sizeof(b)+sizeof(a)) \ - COMPILE_TIME_ASSERT(sizeof(((acc_tmp_t*)0)->x)+sizeof(((acc_tmp_t*)0)->y)+sizeof(((acc_tmp_t*)0)->z) == 2*sizeof(b)+sizeof(a)) \ + COMPILE_TIME_ASSERT(sizeof(((acc_tmp_t*)nullptr)->x)+sizeof(((acc_tmp_t*)nullptr)->y)+sizeof(((acc_tmp_t*)nullptr)->z) == 2*sizeof(b)+sizeof(a)) \ } #if defined(__acc_alignof) # define __COMPILE_TIME_ASSERT_ALIGNOF(a,b) \ diff --git a/src/miniacc.h b/src/miniacc.h index d598bfa3..7c337487 100644 --- a/src/miniacc.h +++ b/src/miniacc.h @@ -4822,7 +4822,7 @@ typedef unsigned short wchar_t; #endif #endif #ifndef offsetof -#define offsetof(s,m) ((size_t)((ptrdiff_t)&(((s*)0)->m))) +#define offsetof(s,m) ((size_t)((ptrdiff_t)&(((s*)nullptr)->m))) #endif #endif #elif (ACC_LIBC_FREESTANDING) @@ -5771,9 +5771,9 @@ ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * a ACCCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(int)) ACCCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(size_t)) #if !(ACC_BROKEN_SIZEOF) - ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(ACC_STATIC_CAST(char*, 0) - ACC_STATIC_CAST(char*, 0))) + ACCCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(ACC_STATIC_CAST(char*, nullptr) - ACC_STATIC_CAST(char*, nullptr))) # if (ACC_HAVE_MM_HUGE_PTR) - ACCCHK_ASSERT(4 == sizeof(ACC_STATIC_CAST(char __huge*, 0) - ACC_STATIC_CAST(char __huge*, 0))) + ACCCHK_ASSERT(4 == sizeof(ACC_STATIC_CAST(char __huge*, nullptr) - ACC_STATIC_CAST(char __huge*, nullptr))) # endif #endif #if (ACC_SIZEOF_PTRDIFF_T > 0) diff --git a/src/pefile.cpp b/src/pefile.cpp index 85da2936..1dfad1c1 100644 --- a/src/pefile.cpp +++ b/src/pefile.cpp @@ -151,8 +151,8 @@ int PeFile::readFileHeader() COMPILE_TIME_ASSERT(sizeof(exe_header_t) == 64) COMPILE_TIME_ASSERT_ALIGNED1(exe_header_t) - COMPILE_TIME_ASSERT(sizeof(((exe_header_t*)0)->_) == 18) - COMPILE_TIME_ASSERT(sizeof(((exe_header_t*)0)->__) == 34) + COMPILE_TIME_ASSERT(sizeof(((exe_header_t*)nullptr)->_) == 18) + COMPILE_TIME_ASSERT(sizeof(((exe_header_t*)nullptr)->__) == 34) exe_header_t h; int ic; @@ -2096,8 +2096,8 @@ unsigned PeFile::stripDebug(unsigned overlaystart) COMPILE_TIME_ASSERT(sizeof(debug_dir_t) == 28) COMPILE_TIME_ASSERT_ALIGNED1(debug_dir_t) - COMPILE_TIME_ASSERT(sizeof(((debug_dir_t*)0)->_) == 16) - COMPILE_TIME_ASSERT(sizeof(((debug_dir_t*)0)->__) == 4) + COMPILE_TIME_ASSERT(sizeof(((debug_dir_t*)nullptr)->_) == 16) + COMPILE_TIME_ASSERT(sizeof(((debug_dir_t*)nullptr)->__) == 4) unsigned const take = IDSIZE(PEDIR_DEBUG); unsigned const skip = IDADDR(PEDIR_DEBUG); @@ -2166,7 +2166,7 @@ void PeFile::checkHeaderValues(unsigned subsystem, unsigned mask, if (IDSIZE(PEDIR_COMRT)) throwCantPack(".NET files are not yet supported"); - if(isection == NULL) + if (isection == nullptr) throwCantPack("No section was found"); if (memcmp(isection[0].name,"UPX",3) == 0)