:: commit 7a8d35b161403d2c873abb6cbef74deaa18354cd

Kamila Szewczyk <kspalaiologos@gmail.com> — 2023-03-19 17:41

parents: 0fc5f77345

crc32 calculation proved correct on Big Endian MIPS64 w. Debian Stretch

diff --git a/src/libbz3.c b/src/libbz3.c
index 880f564..fdcafe6 100644
--- a/src/libbz3.c
+++ b/src/libbz3.c
@@ -60,48 +60,9 @@ static const u32 crc32Table[256] = {
     0xBE2DA0A5L, 0x4C4623A6L, 0x5F16D052L, 0xAD7D5351L
 };
 
-static const u32 crc32TableBig[256] = {
-    0x00000000L, 0x03836BF2L, 0xF7703BE1L, 0xF4F35013L, 0x1F979AC7L, 0x1C14F135L, 0xE8E7A126L, 0xEB64CAD4L, 0xCF58D98AL,
-    0xCCDBB278L, 0x3828E26BL, 0x3BAB8999L, 0xD0CF434DL, 0xD34C28BFL, 0x27BF78ACL, 0x243C135EL, 0x6FC75E10L, 0x6C4435E2L,
-    0x98B765F1L, 0x9B340E03L, 0x7050C4D7L, 0x73D3AF25L, 0x8720FF36L, 0x84A394C4L, 0xA09F879AL, 0xA31CEC68L, 0x57EFBC7BL,
-    0x546CD789L, 0xBF081D5DL, 0xBC8B76AFL, 0x487826BCL, 0x4BFB4D4EL, 0xDE8EBD20L, 0xDD0DD6D2L, 0x29FE86C1L, 0x2A7DED33L,
-    0xC11927E7L, 0xC29A4C15L, 0x36691C06L, 0x35EA77F4L, 0x11D664AAL, 0x12550F58L, 0xE6A65F4BL, 0xE52534B9L, 0x0E41FE6DL,
-    0x0DC2959FL, 0xF931C58CL, 0xFAB2AE7EL, 0xB149E330L, 0xB2CA88C2L, 0x4639D8D1L, 0x45BAB323L, 0xAEDE79F7L, 0xAD5D1205L,
-    0x59AE4216L, 0x5A2D29E4L, 0x7E113ABAL, 0x7D925148L, 0x8961015BL, 0x8AE26AA9L, 0x6186A07DL, 0x6205CB8FL, 0x96F69B9CL,
-    0x9575F06EL, 0xBC1D7B41L, 0xBF9E10B3L, 0x4B6D40A0L, 0x48EE2B52L, 0xA38AE186L, 0xA0098A74L, 0x54FADA67L, 0x5779B195L,
-    0x7345A2CBL, 0x70C6C939L, 0x8435992AL, 0x87B6F2D8L, 0x6CD2380CL, 0x6F5153FEL, 0x9BA203EDL, 0x9821681FL, 0xD3DA2551L,
-    0xD0594EA3L, 0x24AA1EB0L, 0x27297542L, 0xCC4DBF96L, 0xCFCED464L, 0x3B3D8477L, 0x38BEEF85L, 0x1C82FCDBL, 0x1F019729L,
-    0xEBF2C73AL, 0xE871ACC8L, 0x0315661CL, 0x00960DEEL, 0xF4655DFDL, 0xF7E6360FL, 0x6293C661L, 0x6110AD93L, 0x95E3FD80L,
-    0x96609672L, 0x7D045CA6L, 0x7E873754L, 0x8A746747L, 0x89F70CB5L, 0xADCB1FEBL, 0xAE487419L, 0x5ABB240AL, 0x59384FF8L,
-    0xB25C852CL, 0xB1DFEEDEL, 0x452CBECDL, 0x46AFD53FL, 0x0D549871L, 0x0ED7F383L, 0xFA24A390L, 0xF9A7C862L, 0x12C302B6L,
-    0x11406944L, 0xE5B33957L, 0xE63052A5L, 0xC20C41FBL, 0xC18F2A09L, 0x357C7A1AL, 0x36FF11E8L, 0xDD9BDB3CL, 0xDE18B0CEL,
-    0x2AEBE0DDL, 0x29688B2FL, 0x783BF682L, 0x7BB89D70L, 0x8F4BCD63L, 0x8CC8A691L, 0x67AC6C45L, 0x642F07B7L, 0x90DC57A4L,
-    0x935F3C56L, 0xB7632F08L, 0xB4E044FAL, 0x401314E9L, 0x43907F1BL, 0xA8F4B5CFL, 0xAB77DE3DL, 0x5F848E2EL, 0x5C07E5DCL,
-    0x17FCA892L, 0x147FC360L, 0xE08C9373L, 0xE30FF881L, 0x086B3255L, 0x0BE859A7L, 0xFF1B09B4L, 0xFC986246L, 0xD8A47118L,
-    0xDB271AEAL, 0x2FD44AF9L, 0x2C57210BL, 0xC733EBDFL, 0xC4B0802DL, 0x3043D03EL, 0x33C0BBCCL, 0xA6B54BA2L, 0xA5362050L,
-    0x51C57043L, 0x52461BB1L, 0xB922D165L, 0xBAA1BA97L, 0x4E52EA84L, 0x4DD18176L, 0x69ED9228L, 0x6A6EF9DAL, 0x9E9DA9C9L,
-    0x9D1EC23BL, 0x767A08EFL, 0x75F9631DL, 0x810A330EL, 0x828958FCL, 0xC97215B2L, 0xCAF17E40L, 0x3E022E53L, 0x3D8145A1L,
-    0xD6E58F75L, 0xD566E487L, 0x2195B494L, 0x2216DF66L, 0x062ACC38L, 0x05A9A7CAL, 0xF15AF7D9L, 0xF2D99C2BL, 0x19BD56FFL,
-    0x1A3E3D0DL, 0xEECD6D1EL, 0xED4E06ECL, 0xC4268DC3L, 0xC7A5E631L, 0x3356B622L, 0x30D5DDD0L, 0xDBB11704L, 0xD8327CF6L,
-    0x2CC12CE5L, 0x2F424717L, 0x0B7E5449L, 0x08FD3FBBL, 0xFC0E6FA8L, 0xFF8D045AL, 0x14E9CE8EL, 0x176AA57CL, 0xE399F56FL,
-    0xE01A9E9DL, 0xABE1D3D3L, 0xA862B821L, 0x5C91E832L, 0x5F1283C0L, 0xB4764914L, 0xB7F522E6L, 0x430672F5L, 0x40851907L,
-    0x64B90A59L, 0x673A61ABL, 0x93C931B8L, 0x904A5A4AL, 0x7B2E909EL, 0x78ADFB6CL, 0x8C5EAB7FL, 0x8FDDC08DL, 0x1AA830E3L,
-    0x192B5B11L, 0xEDD80B02L, 0xEE5B60F0L, 0x053FAA24L, 0x06BCC1D6L, 0xF24F91C5L, 0xF1CCFA37L, 0xD5F0E969L, 0xD673829BL,
-    0x2280D288L, 0x2103B97AL, 0xCA6773AEL, 0xC9E4185CL, 0x3D17484FL, 0x3E9423BDL, 0x756F6EF3L, 0x76EC0501L, 0x821F5512L,
-    0x819C3EE0L, 0x6AF8F434L, 0x697B9FC6L, 0x9D88CFD5L, 0x9E0BA427L, 0xBA37B779L, 0xB9B4DC8BL, 0x4D478C98L, 0x4EC4E76AL,
-    0xA5A02DBEL, 0xA623464CL, 0x52D0165FL, 0x51537DADL
-};
-
 static u32 crc32sum(u32 crc, u8 * RESTRICT buf, size_t size) {
-    // Test endianness. The code needs to be different for LE and BE systems.
-    u32 test = 1;
-    if (*(u8 *)&test) {
-        while (size--) crc = crc32Table[(crc ^ *(buf++)) & 0xff] ^ (crc >> 8);
-        return crc;
-    } else {
-        while (size--) crc = crc32TableBig[((crc >> 24) ^ *(buf++)) & 0xff] ^ (crc << 8);
-        return crc;
-    }
+    while (size--) crc = crc32Table[((crc >> 24) ^ *(buf++)) & 0xff] ^ (crc << 8);
+    return crc;
 }
 
 /* LZP code. These constants were manually tuned to give the best compression ratio while using relatively
tab: 248 wrap: offon