--- src/main/java/com/ning/compress/lzf/impl/UnsafeChunkEncoderBE.java 2013-03-10 03:40:11.000000000 +0100 +++ src/main/java/com/ning/compress/lzf/impl/UnsafeChunkEncoderBE.java-ibm-bug-proxy 2014-07-02 10:20:10.626157173 +0200 @@ -98,7 +98,7 @@ int i1 = unsafe.getInt(in, BYTE_ARRAY_OFFSET + ptr1); int i2 = unsafe.getInt(in, BYTE_ARRAY_OFFSET + ptr2); if (i1 != i2) { - return 1 + _leadingBytes(i1, i2); + return 1 + _leadingBytes(Integer.reverseBytes(i1), Integer.reverseBytes(i2)); } ptr1 += 4; ptr2 += 4; @@ -106,7 +106,7 @@ i1 = unsafe.getInt(in, BYTE_ARRAY_OFFSET + ptr1); i2 = unsafe.getInt(in, BYTE_ARRAY_OFFSET + ptr2); if (i1 != i2) { - return 5 + _leadingBytes(i1, i2); + return 5 + _leadingBytes(Integer.reverseBytes(i1), Integer.reverseBytes(i2)); } return _findLongMatchLength(in, ptr1+4, ptr2+4, maxPtr1); } @@ -120,7 +120,7 @@ long l1 = unsafe.getLong(in, BYTE_ARRAY_OFFSET + ptr1); long l2 = unsafe.getLong(in, BYTE_ARRAY_OFFSET + ptr2); if (l1 != l2) { - return ptr1 - base + (Long.numberOfLeadingZeros(l1 ^ l2) >> 3); + return ptr1 - base + (Long.numberOfTrailingZeros(Long.reverseBytes(l1) ^ Long.reverseBytes(l2)) >> 3); } ptr1 += 8; ptr2 += 8; @@ -134,6 +134,6 @@ } private final static int _leadingBytes(int i1, int i2) { - return (Long.numberOfLeadingZeros(i1 ^ i2) >> 3); + return (Long.numberOfTrailingZeros(i1 ^ i2) >> 3); } }