From: Nathan Moinvaziri Date: Fri, 2 Jul 2021 23:56:20 +0000 (-0700) Subject: Added CRC32_INITIAL_VALUE to prevent initial call to crc32 function. X-Git-Tag: 2.1.0-beta1~520 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db59b636765af09b78a7f1d6d3333aa5270be5f0;p=thirdparty%2Fzlib-ng.git Added CRC32_INITIAL_VALUE to prevent initial call to crc32 function. --- diff --git a/arch/x86/crc_folding.c b/arch/x86/crc_folding.c index 2f38f6332..de087e344 100644 --- a/arch/x86/crc_folding.c +++ b/arch/x86/crc_folding.c @@ -24,14 +24,12 @@ #include "crc_folding.h" -Z_INTERNAL uint32_t crc_fold_init(unsigned int crc0[4 * 5]) { +Z_INTERNAL void crc_fold_init(unsigned int crc0[4 * 5]) { /* CRC_SAVE */ _mm_storeu_si128((__m128i *)crc0 + 0, _mm_cvtsi32_si128(0x9db42487)); _mm_storeu_si128((__m128i *)crc0 + 1, _mm_setzero_si128()); _mm_storeu_si128((__m128i *)crc0 + 2, _mm_setzero_si128()); _mm_storeu_si128((__m128i *)crc0 + 3, _mm_setzero_si128()); - - return 0; } static void fold_1(__m128i *xmm_crc0, __m128i *xmm_crc1, __m128i *xmm_crc2, __m128i *xmm_crc3) { diff --git a/arch/x86/crc_folding.h b/arch/x86/crc_folding.h index a9ed41f3c..3af7f079a 100644 --- a/arch/x86/crc_folding.h +++ b/arch/x86/crc_folding.h @@ -12,7 +12,7 @@ #include "../../zutil.h" -Z_INTERNAL uint32_t crc_fold_init(unsigned int crc0[4 * 5]); +Z_INTERNAL void crc_fold_init(unsigned int crc0[4 * 5]); Z_INTERNAL uint32_t crc_fold_512to32(unsigned int crc0[4 * 5]); Z_INTERNAL void crc_fold_copy(unsigned int crc0[4 * 5], unsigned char *, const unsigned char *, long); diff --git a/crc32.c b/crc32.c index 74d9c414c..3cb066ce5 100644 --- a/crc32.c +++ b/crc32.c @@ -183,11 +183,10 @@ Z_INTERNAL void crc_reset(deflate_state *const s) { #ifdef X86_PCLMULQDQ_CRC x86_check_features(); if (x86_cpu_has_pclmulqdq) { - s->strm->adler = crc_fold_init(s->crc0); - return; + crc_fold_init(s->crc0); } #endif - s->strm->adler = PREFIX(crc32)(0L, NULL, 0); + s->strm->adler = CRC32_INITIAL_VALUE; } Z_INTERNAL void copy_with_crc(PREFIX3(stream) *strm, unsigned char *dst, unsigned long size) { diff --git a/inflate.c b/inflate.c index 6ba6e83de..45c90232a 100644 --- a/inflate.c +++ b/inflate.c @@ -410,7 +410,7 @@ int32_t Z_EXPORT PREFIX(inflate)(PREFIX3(stream) *strm, int32_t flush) { if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ if (state->wbits == 0) state->wbits = 15; - state->check = PREFIX(crc32)(0L, NULL, 0); + state->check = CRC32_INITIAL_VALUE; CRC2(state->check, hold); INITBITS(); state->mode = FLAGS; @@ -578,7 +578,7 @@ int32_t Z_EXPORT PREFIX(inflate)(PREFIX3(stream) *strm, int32_t flush) { state->head->hcrc = (int)((state->flags >> 9) & 1); state->head->done = 1; } - strm->adler = state->check = PREFIX(crc32)(0L, NULL, 0); + strm->adler = state->check = CRC32_INITIAL_VALUE; state->mode = TYPE; break; #endif diff --git a/zutil.h b/zutil.h index bcb9ed12f..30bd6394e 100644 --- a/zutil.h +++ b/zutil.h @@ -76,6 +76,7 @@ extern z_const char * const PREFIX(z_errmsg)[10]; /* indexed by 2-zlib_error */ #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ #define ADLER32_INITIAL_VALUE 1 /* initial adler-32 hash value */ +#define CRC32_INITIAL_VALUE 0 /* initial crc-32 hash value */ /* target dependencies */