summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Walton <bdwalton@gmail.com>2014-05-30 16:22:40 +0100
committerJunio C Hamano <gitster@pobox.com>2014-05-30 11:48:28 -0700
commit9c65ee15ee11c9b9d2fc9d7306fb1e238b35d0c1 (patch)
tree28e142253e0dfa9f0541828ca08a2bc59eee73f9
parent839fa9c500c7771d15831e2bcf77697cd70620f9 (diff)
downloadgit-cb/byte-order.tar.gz
compat/bswap.h: fix endianness detectioncb/byte-order
The changes to make detection of endianness more portable had a bug that breaks on (at least) Solaris x86. The bug appears to be a simple copy/paste typo. It checks for _BIG_ENDIAN and not _LITTLE_ENDIAN for both the case where we would decide the system is big endian and little endian. Instead, the second test should be for _LITTLE_ENDIAN and not _BIG_ENDIAN. Two fixes were possible: 1. Change the negation order of the conditions in the second test. 2. Reverse the order of the conditions in the second test. Use the second option so that the condition we expect is always a positive check. Signed-off-by: Ben Walton <bdwalton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--compat/bswap.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/compat/bswap.h b/compat/bswap.h
index c4293db004..f6fd9a6a6c 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -120,7 +120,7 @@ static inline uint64_t git_bswap64(uint64_t x)
# if defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
# define GIT_BYTE_ORDER GIT_BIG_ENDIAN
-# elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
+# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
# define GIT_BYTE_ORDER GIT_LITTLE_ENDIAN
# else
# error "Cannot determine endianness"