Index: third_party/zlib/crc32.c |
diff --git a/third_party/zlib/crc32.c b/third_party/zlib/crc32.c |
index 09228ed9c76fbac076932fcf7c79214e10dd2bc5..75f2290d83c23978afb645fe677871a8f4ba88db 100644 |
--- a/third_party/zlib/crc32.c |
+++ b/third_party/zlib/crc32.c |
@@ -1,5 +1,5 @@ |
/* crc32.c -- compute the CRC-32 of a data stream |
- * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler |
+ * Copyright (C) 1995-2006, 2010 Mark Adler |
* For conditions of distribution and use, see copyright notice in zlib.h |
* |
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster |
@@ -17,8 +17,6 @@ |
of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should |
first call get_crc_table() to initialize the tables before allowing more than |
one thread to use crc32(). |
- |
- DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. |
*/ |
#ifdef MAKECRCH |
@@ -34,11 +32,31 @@ |
#define local static |
+/* Find a four-byte integer type for crc32_little() and crc32_big(). */ |
+#ifndef NOBYFOUR |
+# ifdef STDC /* need ANSI C limits.h to determine sizes */ |
+# include <limits.h> |
+# define BYFOUR |
+# if (UINT_MAX == 0xffffffffUL) |
+ typedef unsigned int u4; |
+# else |
+# if (ULONG_MAX == 0xffffffffUL) |
+ typedef unsigned long u4; |
+# else |
+# if (USHRT_MAX == 0xffffffffUL) |
+ typedef unsigned short u4; |
+# else |
+# undef BYFOUR /* can't find a four-byte integer type! */ |
+# endif |
+# endif |
+# endif |
+# endif /* STDC */ |
+#endif /* !NOBYFOUR */ |
+ |
/* Definitions for doing the crc four data bytes at a time. */ |
-#if !defined(NOBYFOUR) && defined(Z_U4) |
-# define BYFOUR |
-#endif |
#ifdef BYFOUR |
+# define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \ |
+ (((w)&0xff00)<<8)+(((w)&0xff)<<24)) |
local unsigned long crc32_little OF((unsigned long, |
const unsigned char FAR *, unsigned)); |
local unsigned long crc32_big OF((unsigned long, |
@@ -52,16 +70,16 @@ |
local unsigned long gf2_matrix_times OF((unsigned long *mat, |
unsigned long vec)); |
local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); |
-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); |
+local uLong crc32_combine_(uLong crc1, uLong crc2, z_off64_t len2); |
#ifdef DYNAMIC_CRC_TABLE |
local volatile int crc_table_empty = 1; |
-local z_crc_t FAR crc_table[TBLS][256]; |
+local unsigned long FAR crc_table[TBLS][256]; |
local void make_crc_table OF((void)); |
#ifdef MAKECRCH |
- local void write_table OF((FILE *, const z_crc_t FAR *)); |
+ local void write_table OF((FILE *, const unsigned long FAR *)); |
#endif /* MAKECRCH */ |
/* |
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: |
@@ -91,9 +109,9 @@ |
*/ |
local void make_crc_table() |
{ |
- z_crc_t c; |
+ unsigned long c; |
int n, k; |
- z_crc_t poly; /* polynomial exclusive-or pattern */ |
+ unsigned long poly; /* polynomial exclusive-or pattern */ |
/* terms of polynomial defining this crc (except x^32): */ |
static volatile int first = 1; /* flag to limit concurrent making */ |
static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; |
@@ -105,13 +123,13 @@ |
first = 0; |
/* make exclusive-or pattern from polynomial (0xedb88320UL) */ |
- poly = 0; |
- for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) |
- poly |= (z_crc_t)1 << (31 - p[n]); |
+ poly = 0UL; |
+ for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++) |
+ poly |= 1UL << (31 - p[n]); |
/* generate a crc for every 8-bit value */ |
for (n = 0; n < 256; n++) { |
- c = (z_crc_t)n; |
+ c = (unsigned long)n; |
for (k = 0; k < 8; k++) |
c = c & 1 ? poly ^ (c >> 1) : c >> 1; |
crc_table[0][n] = c; |
@@ -122,11 +140,11 @@ |
and then the byte reversal of those as well as the first table */ |
for (n = 0; n < 256; n++) { |
c = crc_table[0][n]; |
- crc_table[4][n] = ZSWAP32(c); |
+ crc_table[4][n] = REV(c); |
for (k = 1; k < 4; k++) { |
c = crc_table[0][c & 0xff] ^ (c >> 8); |
crc_table[k][n] = c; |
- crc_table[k + 4][n] = ZSWAP32(c); |
+ crc_table[k + 4][n] = REV(c); |
} |
} |
#endif /* BYFOUR */ |
@@ -148,7 +166,7 @@ |
if (out == NULL) return; |
fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); |
fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); |
- fprintf(out, "local const z_crc_t FAR "); |
+ fprintf(out, "local const unsigned long FAR "); |
fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); |
write_table(out, crc_table[0]); |
# ifdef BYFOUR |
@@ -168,13 +186,12 @@ |
#ifdef MAKECRCH |
local void write_table(out, table) |
FILE *out; |
- const z_crc_t FAR *table; |
+ const unsigned long FAR *table; |
{ |
int n; |
for (n = 0; n < 256; n++) |
- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", |
- (unsigned long)(table[n]), |
+ fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", table[n], |
n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); |
} |
#endif /* MAKECRCH */ |
@@ -189,13 +206,13 @@ |
/* ========================================================================= |
* This function can be used by asm versions of crc32() |
*/ |
-const z_crc_t FAR * ZEXPORT get_crc_table() |
+const unsigned long FAR * ZEXPORT get_crc_table() |
{ |
#ifdef DYNAMIC_CRC_TABLE |
if (crc_table_empty) |
make_crc_table(); |
#endif /* DYNAMIC_CRC_TABLE */ |
- return (const z_crc_t FAR *)crc_table; |
+ return (const unsigned long FAR *)crc_table; |
} |
/* ========================================================================= */ |
@@ -217,7 +234,7 @@ |
#ifdef BYFOUR |
if (sizeof(void *) == sizeof(ptrdiff_t)) { |
- z_crc_t endian; |
+ u4 endian; |
endian = 1; |
if (*((unsigned char *)(&endian))) |
@@ -251,17 +268,17 @@ |
const unsigned char FAR *buf; |
unsigned len; |
{ |
- register z_crc_t c; |
- register const z_crc_t FAR *buf4; |
- |
- c = (z_crc_t)crc; |
+ register u4 c; |
+ register const u4 FAR *buf4; |
+ |
+ c = (u4)crc; |
c = ~c; |
while (len && ((ptrdiff_t)buf & 3)) { |
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); |
len--; |
} |
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf; |
+ buf4 = (const u4 FAR *)(const void FAR *)buf; |
while (len >= 32) { |
DOLIT32; |
len -= 32; |
@@ -291,17 +308,17 @@ |
const unsigned char FAR *buf; |
unsigned len; |
{ |
- register z_crc_t c; |
- register const z_crc_t FAR *buf4; |
- |
- c = ZSWAP32((z_crc_t)crc); |
+ register u4 c; |
+ register const u4 FAR *buf4; |
+ |
+ c = REV((u4)crc); |
c = ~c; |
while (len && ((ptrdiff_t)buf & 3)) { |
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); |
len--; |
} |
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf; |
+ buf4 = (const u4 FAR *)(const void FAR *)buf; |
buf4--; |
while (len >= 32) { |
DOBIG32; |
@@ -318,7 +335,7 @@ |
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); |
} while (--len); |
c = ~c; |
- return (unsigned long)(ZSWAP32(c)); |
+ return (unsigned long)(REV(c)); |
} |
#endif /* BYFOUR */ |