| Index: third_party/zlib/crc32.c
|
| ===================================================================
|
| --- third_party/zlib/crc32.c (revision 113739)
|
| +++ 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);
|
| +}
|
|
|