From 4f75d566bd8181d36dfddac20ff50556e2f11f47 Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Sat, 28 May 2005 23:17:57 +0000 Subject: **BUGFIX** fix LE_64 and BE_64 macros on non-x86 arches try to make all these macros safer with extra typecasting thanks Diego 'Flameeyes' Petten CVS patchset: 7586 CVS date: 2005/05/28 23:17:57 --- src/xine-engine/bswap.h | 54 +++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/xine-engine/bswap.h b/src/xine-engine/bswap.h index 6e3074326..ad06ba919 100644 --- a/src/xine-engine/bswap.h +++ b/src/xine-engine/bswap.h @@ -122,32 +122,34 @@ inline static unsigned long long int ByteSwap64(unsigned long long int x) #else -#define BE_16(x) ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1]) -#define BE_32(x) ((((uint8_t*)(x))[0] << 24) | \ - (((uint8_t*)(x))[1] << 16) | \ - (((uint8_t*)(x))[2] << 8) | \ - ((uint8_t*)(x))[3]) -#define BE_64(x) ((uint64_t)(((uint8_t*)(x))[0] << 56) | \ - (uint64_t)(((uint8_t*)(x))[1] << 48) | \ - (uint64_t)(((uint8_t*)(x))[2] << 40) | \ - (uint64_t)(((uint8_t*)(x))[3] << 32) | \ - (uint64_t)(((uint8_t*)(x))[4] << 24) | \ - (uint64_t)(((uint8_t*)(x))[5] << 16) | \ - (uint64_t)(((uint8_t*)(x))[6] << 8) | \ - (uint64_t)((uint8_t*)(x))[7]) -#define LE_16(x) ((((uint8_t*)(x))[1] << 8) | ((uint8_t*)(x))[0]) -#define LE_32(x) ((((uint8_t*)(x))[3] << 24) | \ - (((uint8_t*)(x))[2] << 16) | \ - (((uint8_t*)(x))[1] << 8) | \ - ((uint8_t*)(x))[0]) -#define LE_64(x) ((uint64_t)(((uint8_t*)(x))[7] << 56) | \ - (uint64_t)(((uint8_t*)(x))[6] << 48) | \ - (uint64_t)(((uint8_t*)(x))[5] << 40) | \ - (uint64_t)(((uint8_t*)(x))[4] << 32) | \ - (uint64_t)(((uint8_t*)(x))[3] << 24) | \ - (uint64_t)(((uint8_t*)(x))[2] << 16) | \ - (uint64_t)(((uint8_t*)(x))[1] << 8) | \ - (uint64_t)((uint8_t*)(x))[0]) +#define BE_16(x) (((uint16_t)(((uint8_t*)(x))[0]) << 8) | \ + ((uint16_t)((uint8_t*)(x))[1])) +#define BE_32(x) (((uint32_t)(((uint8_t*)(x))[0]) << 24) | \ + ((uint32_t)(((uint8_t*)(x))[1]) << 16) | \ + ((uint32_t)(((uint8_t*)(x))[2]) << 8) | \ + ((uint32_t)((uint8_t*)(x))[3])) +#define BE_64(x) (((uint64_t)(((uint8_t*)(x))[0]) << 56) | \ + ((uint64_t)(((uint8_t*)(x))[1]) << 48) | \ + ((uint64_t)(((uint8_t*)(x))[2]) << 40) | \ + ((uint64_t)(((uint8_t*)(x))[3]) << 32) | \ + ((uint64_t)(((uint8_t*)(x))[4]) << 24) | \ + ((uint64_t)(((uint8_t*)(x))[5]) << 16) | \ + ((uint64_t)(((uint8_t*)(x))[6]) << 8) | \ + ((uint64_t)((uint8_t*)(x))[7])) +#define LE_16(x) (((uint16_t)(((uint8_t*)(x))[1]) << 8) | \ + ((uint16_t)((uint8_t*)(x))[0])) +#define LE_32(x) (((uint32_t)(((uint8_t*)(x))[3]) << 24) | \ + ((uint32_t)(((uint8_t*)(x))[2]) << 16) | \ + ((uint32_t)(((uint8_t*)(x))[1]) << 8) | \ + ((uint32_t)((uint8_t*)(x))[0])) +#define LE_64(x) (((uint64_t)(((uint8_t*)(x))[7]) << 56) | \ + ((uint64_t)(((uint8_t*)(x))[6]) << 48) | \ + ((uint64_t)(((uint8_t*)(x))[5]) << 40) | \ + ((uint64_t)(((uint8_t*)(x))[4]) << 32) | \ + ((uint64_t)(((uint8_t*)(x))[3]) << 24) | \ + ((uint64_t)(((uint8_t*)(x))[2]) << 16) | \ + ((uint64_t)(((uint8_t*)(x))[1]) << 8) | \ + ((uint64_t)((uint8_t*)(x))[0])) #endif /* !ARCH_X86 */ -- cgit v1.2.3