[PATCH] Fix a bug in compat/bswap.h endianness detection

2014-05-30 Thread Ben Walton
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 bdwal...@gmail.com
---
I think that this should be applied to cb/byte-swap and re-merged
with next.

 compat/bswap.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/compat/bswap.h b/compat/bswap.h
index c4293db..f6fd9a6 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
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Fix a bug in compat/bswap.h endianness detection

2014-05-30 Thread Junio C Hamano
Thanks; this should have been caught during the review.

+# if defined(_BIG_ENDIAN)  !defined(_LITTLE_ENDIAN)
+#  ...
+# elif defined(_BIG_ENDIAN)  !defined(_LITTLE_ENDIAN)
+#  ...
+# else

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html