diff -urpN jumbo-bleed1/src/common.h jumbo-bleed0/src/common.h --- jumbo-bleed1/src/common.h 2012-07-07 15:30:03.671875000 +0000 +++ jumbo-bleed0/src/common.h 2012-07-07 15:35:25.781250000 +0000 @@ -23,7 +23,7 @@ typedef unsigned long long ARCH_WORD_64; /* ONLY use this to check alignments of even power of 2 (2, 4, 8, 16, etc) byte counts (CNT). the cast to void* MUST be done, due to C spec. http://stackoverflow.com/a/1898487 */ -#define is_aligned(PTR, CNT) (((uintptr_t)(const void *)(PTR))&(CNT-1)==0) +#define is_aligned(PTR, CNT) (((ARCH_WORD)(const void *)(PTR))&(CNT-1)==0) #ifdef __GNUC__ #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) diff -urpN jumbo-bleed1/src/memory.c jumbo-bleed0/src/memory.c --- jumbo-bleed1/src/memory.c 2012-07-07 15:30:04.390625000 +0000 +++ jumbo-bleed0/src/memory.c 2012-07-07 15:35:25.734375000 +0000 @@ -226,9 +226,7 @@ void alter_endianity_w(void *_x, unsigne } #else unsigned char *cpX, c; - long l; - l = (long)x; - if ( (l & (sizeof(ARCH_WORD_32)-1)) == 0) { + if (isaligned(x,sizeof(ARCH_WORD_32))) { // we are in alignment. while (++i < count) { x[i] = JOHNSWAP(x[i]);