summaryrefslogtreecommitdiff
path: root/src/utils/chksum/crc32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/chksum/crc32.c')
-rw-r--r--src/utils/chksum/crc32.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/utils/chksum/crc32.c b/src/utils/chksum/crc32.c
index b11dec9..0c46107 100644
--- a/src/utils/chksum/crc32.c
+++ b/src/utils/chksum/crc32.c
@@ -97,7 +97,8 @@ liberasurecode_crc32_alt(int crc, const void *buf, size_t size)
crc = crc ^ ~0U;
while (size--)
- crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
+ crc = crc32_tab[(crc ^ *p++) & 0xFF] ^
+ ((((crc >> 8) & 0x00FFFFFF) ^ 0x00800000) - 0x00800000);
return crc ^ ~0U;
}