Mercurial > dovecot > core-2.2
diff src/lib/byteorder.h @ 22618:57b5452d4528
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.
author | Bill Cole <18053819+grumpybozo@users.noreply.github.com> |
---|---|
date | Tue, 10 Oct 2017 17:40:04 -0400 |
parents | fb6142ca50e3 |
children | 639251a1d58e |
line wrap: on
line diff
--- a/src/lib/byteorder.h Mon Oct 16 15:41:56 2017 +0300 +++ b/src/lib/byteorder.h Tue Oct 10 17:40:04 2017 -0400 @@ -91,14 +91,14 @@ */ 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)