summaryrefslogtreecommitdiff
path: root/libarchive/archive_read_support_format_lha.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@acm.org>2016-07-17 08:28:51 -0700
committerTim Kientzle <kientzle@acm.org>2016-07-17 08:28:51 -0700
commitd2e8111b3a3468102737f7d414ea1bb6f6904bfe (patch)
tree6107030ea6748585ff90ce028f59263618c4e395 /libarchive/archive_read_support_format_lha.c
parentad661cf39314a9772adad2e4d1d3967c26ffd4d3 (diff)
downloadlibarchive-d2e8111b3a3468102737f7d414ea1bb6f6904bfe.tar.gz
Fix check for GCC >= 4.8
Diffstat (limited to 'libarchive/archive_read_support_format_lha.c')
-rw-r--r--libarchive/archive_read_support_format_lha.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libarchive/archive_read_support_format_lha.c b/libarchive/archive_read_support_format_lha.c
index dbfc1cd8..a7f1d8d9 100644
--- a/libarchive/archive_read_support_format_lha.c
+++ b/libarchive/archive_read_support_format_lha.c
@@ -1715,8 +1715,11 @@ lha_crc16(uint16_t crc, const void *pp, size_t len)
#undef bswap16
#if defined(_MSC_VER) && _MSC_VER >= 1400 /* Visual Studio */
# define bswap16(x) _byteswap_ushort(x)
-#elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 8) \
- || defined(__clang__)
+#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ > 4)
+/* GCC 4.8 and later has __builtin_bswap16() */
+# define bswap16(x) __builtin_bswap16(x)
+#elif defined(__clang__)
+/* All clang versions have __builtin_bswap16() */
# define bswap16(x) __builtin_bswap16(x)
#else
# define bswap16(x) ((((x) >> 8) & 0xff) | ((x) << 8))