Index: third_party/zlib/crc32.c |
=================================================================== |
--- third_party/zlib/crc32.c (revision 112951) |
+++ third_party/zlib/crc32.c (working copy) |
@@ -1,5 +1,5 @@ |
/* crc32.c -- compute the CRC-32 of a data stream |
- * Copyright (C) 1995-2005 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 |
@@ -9,7 +9,7 @@ |
* factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. |
*/ |
-/* @(#) $Id: crc32.c,v 3.6 2005/08/04 19:14:14 tor%cs.brown.edu Exp $ */ |
+/* @(#) $Id$ */ |
/* |
Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore |
@@ -53,7 +53,7 @@ |
/* Definitions for doing the crc four data bytes at a time. */ |
#ifdef BYFOUR |
-# define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \ |
+# 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)); |
@@ -68,7 +68,9 @@ |
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_(uLong crc1, uLong crc2, z_off64_t len2); |
+ |
#ifdef DYNAMIC_CRC_TABLE |
local volatile int crc_table_empty = 1; |
@@ -219,7 +221,7 @@ |
unsigned long ZEXPORT crc32(crc, buf, len) |
unsigned long crc; |
const unsigned char FAR *buf; |
- unsigned len; |
+ uInt len; |
{ |
if (buf == Z_NULL) return 0UL; |
@@ -367,22 +369,22 @@ |
} |
/* ========================================================================= */ |
-uLong ZEXPORT crc32_combine(crc1, crc2, len2) |
+local uLong crc32_combine_(crc1, crc2, len2) |
uLong crc1; |
uLong crc2; |
- z_off_t len2; |
+ z_off64_t len2; |
{ |
int n; |
unsigned long row; |
unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ |
unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ |
- /* degenerate case */ |
- if (len2 == 0) |
+ /* degenerate case (also disallow negative lengths) */ |
+ if (len2 <= 0) |
return crc1; |
/* put operator for one zero bit in odd */ |
- odd[0] = 0xedb88320L; /* CRC-32 polynomial */ |
+ odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ |
row = 1; |
for (n = 1; n < GF2_DIM; n++) { |
odd[n] = row; |
@@ -421,3 +423,20 @@ |
crc1 ^= crc2; |
return crc1; |
} |
+ |
+/* ========================================================================= */ |
+uLong ZEXPORT crc32_combine(crc1, crc2, len2) |
+ uLong crc1; |
+ uLong crc2; |
+ z_off_t len2; |
+{ |
+ return crc32_combine_(crc1, crc2, len2); |
+} |
+ |
+uLong ZEXPORT crc32_combine64(crc1, crc2, len2) |
+ uLong crc1; |
+ uLong crc2; |
+ z_off64_t len2; |
+{ |
+ return crc32_combine_(crc1, crc2, len2); |
+} |