From: Bill Cole <18053819+grumpybozo@users.noreply.github.com> Date: Tue, 10 Oct 2017 21:40:04 +0000 (-0400) Subject: Added "ULL" to the hex literals that needed it. X-Git-Tag: 2.3.0.rc1~836 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0fbce082b59df2738e0c893f5251cb0116e1835b;p=thirdparty%2Fdovecot%2Fcore.git Added "ULL" to the hex literals that needed it. On 32-bit platforms with older compilers (e.g. gcc 4.2 on MacOS 10.6 running on a 1st-gen Core Duo) a 'long' is 4 bytes and the compiler does not automatically use a 'long long' when needed, but instead generates an error. e.g.: libtool: compile: /usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib-mail -I../../../src/lib-index -I../../../src/lib-storage -I../../../src/plugins/fts -I../../../src/doveadm -I/opt/local/include/openssl -I/opt/local/include -I/opt/local/include/CLucene/ext -pipe -Os -arch i386 -D__STDC_LIMIT_MACROS -MT lucene-wrapper.lo -MD -MP -MF .deps/lucene-wrapper.Tpo -c lucene-wrapper.cc -fno-common -DPIC -o .libs/lucene-wrapper.o In file included from ../../../src/lib/lib.h:33, from lucene-wrapper.cc:4: ../../../src/lib/byteorder.h:94: error: integer constant is too large for ‘long’ type ../../../src/lib/byteorder.h:95: error: integer constant is too large for ‘long’ type ../../../src/lib/byteorder.h:96: error: integer constant is too large for ‘long’ type ../../../src/lib/byteorder.h:97: error: integer constant is too large for ‘long’ type make[4]: *** [lucene-wrapper.lo] Error 1 Adding the 'ULL' to the end of the 16-digit hex literals that are used to test the structure of 64-bit integers fixes this and avoids any problem which could arise from the compiler using a 32-bit type for those literals that could fit in 32 bites. --- diff --git a/src/lib/byteorder.h b/src/lib/byteorder.h index da0fba6715..f6cdf322da 100644 --- a/src/lib/byteorder.h +++ b/src/lib/byteorder.h @@ -91,14 +91,14 @@ static inline uint8_t cpu8_to_le(uint8_t in); */ static inline uint64_t bswap_64(uint64_t in) { - return ((in & 0xff00000000000000) >> 56) | - ((in & 0x00ff000000000000) >> 40) | - ((in & 0x0000ff0000000000) >> 24) | - ((in & 0x000000ff00000000) >> 8) | - ((in & 0x00000000ff000000) << 8) | - ((in & 0x0000000000ff0000) << 24) | - ((in & 0x000000000000ff00) << 40) | - ((in & 0x00000000000000ff) << 56); + return ((in & 0xff00000000000000ULL) >> 56) | + ((in & 0x00ff000000000000ULL) >> 40) | + ((in & 0x0000ff0000000000ULL) >> 24) | + ((in & 0x000000ff00000000ULL) >> 8) | + ((in & 0x00000000ff000000ULL) << 8) | + ((in & 0x0000000000ff0000ULL) << 24) | + ((in & 0x000000000000ff00ULL) << 40) | + ((in & 0x00000000000000ffULL) << 56); } static inline uint32_t bswap_32(uint32_t in)