Endianess correction
authoryann.collet.73@gmail.com <yann.collet.73@gmail.com@650e7d94-2a16-8b24-b05c-7c0b3f6821cd>
Fri, 16 Dec 2011 23:41:46 +0000 (23:41 +0000)
committeryann.collet.73@gmail.com <yann.collet.73@gmail.com@650e7d94-2a16-8b24-b05c-7c0b3f6821cd>
Fri, 16 Dec 2011 23:41:46 +0000 (23:41 +0000)
git-svn-id: https://lz4.googlecode.com/svn/trunk@43 650e7d94-2a16-8b24-b05c-7c0b3f6821cd

lz4.c

diff --git a/lz4.c b/lz4.c
index 8041552..2c522f1 100644 (file)
--- a/lz4.c
+++ b/lz4.c
@@ -160,7 +160,9 @@ int LZ4_compressCtx(void** ctx,
 \r
        BYTE* op = (BYTE*) dest;\r
        \r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
        const size_t DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };\r
+#endif\r
        int len, length;\r
        const int skipStrength = SKIPSTRENGTH;\r
        U32 forwardH;\r
@@ -223,7 +225,11 @@ int LZ4_compressCtx(void** ctx,
 \r
 _next_match:\r
                // Encode Offset\r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
                A16(op) = (ip-ref); op+=2;\r
+#else\r
+               { int delta = ip-ref; *op++ = delta; *op++ = delta>>8; }\r
+#endif\r
 \r
                // Start Counting\r
                ip+=MINMATCH; ref+=MINMATCH;   // MinMatch verified\r
@@ -308,7 +314,9 @@ int LZ4_compress64kCtx(void** ctx,
 \r
        BYTE* op = (BYTE*) dest;\r
        \r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
        const size_t DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };\r
+#endif\r
        int len, length;\r
        const int skipStrength = SKIPSTRENGTH;\r
        U32 forwardH;\r
@@ -370,7 +378,11 @@ int LZ4_compress64kCtx(void** ctx,
 \r
 _next_match:\r
                // Encode Offset\r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
                A16(op) = (ip-ref); op+=2;\r
+#else\r
+               { int delta = ip-ref; *op++ = delta; *op++ = delta>>8; }\r
+#endif\r
 \r
                // Start Counting\r
                ip+=MINMATCH; ref+=MINMATCH;   // MinMatch verified\r
@@ -495,7 +507,11 @@ int LZ4_uncompress(char* source,
 \r
 \r
                // get offset\r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
                ref = cpy - A16(ip); ip+=2;\r
+#else\r
+               { int delta = *ip++; delta += *ip++ << 8; ref = cpy - delta; }\r
+#endif\r
 \r
                // get matchlength\r
                if ((length=(token&ML_MASK)) == ML_MASK) { for (;*ip==255;length+=255) {ip++;} length += *ip++; } \r
@@ -573,9 +589,12 @@ int LZ4_uncompress_unknownOutputSize(
                LZ4_WILDCOPY(ip, op, cpy); ip -= (op-cpy); op = cpy;\r
                if (ip>=iend) break;    // check EOF\r
 \r
-\r
                // get offset\r
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\r
                ref = cpy - A16(ip); ip+=2;\r
+#else\r
+               { int delta = *ip++; delta += *ip++ << 8; ref = cpy - delta; }\r
+#endif\r
 \r
                // get matchlength\r
                if ((length=(token&ML_MASK)) == ML_MASK) { for (;(len=*ip++)==255;length+=255){} length += len; }\r