Blob Blame History Raw
--- 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);
     }
 }