diff --git a/src/adler32.c b/src/adler32.c index f99b2d7..fc4cbed 100644 --- a/src/adler32.c +++ b/src/adler32.c @@ -41,12 +41,12 @@ #define A32_BASE 65521 #define A32_NMAX 5552 -unsigned int tinf_adler32(const void *data, unsigned int length) +unsigned int tinf_adler32(const void *data, unsigned int length, unsigned int prev_sum /* 1 */) { const unsigned char *buf = (const unsigned char *)data; - unsigned int s1 = 1; - unsigned int s2 = 0; + unsigned int s1 = prev_sum & 0xffff; + unsigned int s2 = prev_sum >> 16; while (length > 0) { diff --git a/src/tinf.h b/src/tinf.h index e00f171..2d103e0 100644 --- a/src/tinf.h +++ b/src/tinf.h @@ -106,7 +106,7 @@ int tinf_gzip_parse_trailer(TINF_GZIP_INFO *gz, const unsigned char **source, un int TINFCC tinf_zlib_uncompress(void *dest, unsigned int *destLen, const void *source, unsigned int sourceLen); -unsigned int TINFCC tinf_adler32(const void *data, unsigned int length); +unsigned int TINFCC tinf_adler32(const void *data, unsigned int length, unsigned int prev_sum /* 1 */); unsigned int TINFCC tinf_crc32(const void *data, unsigned int length);