aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Kal Conley <b17c0de@gmail.com>2014-12-16 02:30:45 +0100
committerGravatar Kal Conley <b17c0de@gmail.com>2014-12-16 02:30:45 +0100
commitc3e928021f3817ac54973dc54fd6d91d292e55aa (patch)
tree486dead413de3ce8be8c654d27640b37ca5476b2
parent59692c3fc080645fdc6e8d2445f04a1d65cee48c (diff)
Improved little endian byte order detection
Including <sys/param.h> on Mac/iOS doesn't define __BYTE_ORDER so PROTOBUF_LITTLE_ENDIAN was never being defined. This commit adds a check for the __LITTLE_ENDIAN__ macro which is defined by clang and Apple gcc on little endian architectures.
-rw-r--r--src/google/protobuf/io/coded_stream.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/google/protobuf/io/coded_stream.h b/src/google/protobuf/io/coded_stream.h
index b9c30fa3..978cc19d 100644
--- a/src/google/protobuf/io/coded_stream.h
+++ b/src/google/protobuf/io/coded_stream.h
@@ -123,7 +123,8 @@
#endif
#else
#include <sys/param.h> // __BYTE_ORDER
- #if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && \
+ #if ((defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
+ (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN)) && \
!defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
#define PROTOBUF_LITTLE_ENDIAN 1
#endif