From aa88571a6b847a96bb8ee998a9868c5a1bdb3a6e Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 10 Apr 2023 21:38:02 -0500 Subject: [PATCH] Better adler32. --- lib/deflate.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/deflate.c b/lib/deflate.c index 06d61e97..a418c21c 100644 --- a/lib/deflate.c +++ b/lib/deflate.c @@ -433,16 +433,17 @@ static void gzip_crc(struct deflate *dd, char *data, unsigned len) /* // Start with crc = 1, or pass in last crc to append more data +// Deferred modulus good for paged size inputs (can't overflow for ~5500 bytes) unsigned adler32(char *buf, unsigned len, unsigned crc) { unsigned aa = crc&((1<<16)-1), bb = crc>>16; while (len--) { - aa = (aa+*buf)%65521; - bb = (bb+aa)%65521; + aa += *buf++; + bb += aa; } - return (bb<16)+aa; + return ((bb%65521)<<16)+aa%65521; } */ -- 2.39.2