]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Reuse adler32_len_64 in adler32_c.
authorNathan Moinvaziri <nathan@solidstatenetworks.com>
Mon, 15 Nov 2021 04:58:01 +0000 (20:58 -0800)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Thu, 2 Dec 2021 08:27:21 +0000 (09:27 +0100)
adler32.c
adler32_p.h

index 7b245fc8498489c4c8ba57ba6121cc6684257dbc..499adbb60bb3c1a0dc474920fb37220f8b0c7f34 100644 (file)
--- a/adler32.c
+++ b/adler32.c
@@ -51,30 +51,7 @@ Z_INTERNAL uint32_t adler32_c(uint32_t adler, const unsigned char *buf, size_t l
     }
 
     /* do remaining bytes (less than NMAX, still just one modulo) */
-    if (len) {                  /* avoid modulos if none remaining */
-#ifdef UNROLL_MORE
-        while (len >= 16) {
-            len -= 16;
-            DO16(adler, sum2, buf);
-            buf += 16;
-#else
-        while (len >= 8) {
-            len -= 8;
-            DO8(adler, sum2, buf, 0);
-            buf += 8;
-#endif
-        }
-        while (len) {
-            --len;
-            adler += *buf++;
-            sum2 += adler;
-        }
-        adler %= BASE;
-        sum2 %= BASE;
-    }
-
-    /* return recombined sums */
-    return adler | (sum2 << 16);
+    return adler32_len_64(adler, buf, len, sum2);
 }
 
 #ifdef ZLIB_COMPAT
index adcc79f01e8404ba8cd7f6e1d47259d1f9d60361..1adc1ccb0aebc9181a242ac1bff3976c9e4141da 100644 (file)
@@ -34,14 +34,22 @@ static inline uint32_t adler32_len_16(uint32_t adler, const unsigned char *buf,
     }
     adler %= BASE;
     sum2 %= BASE;            /* only added so many BASE's */
+    /* return recombined sums */
     return adler | (sum2 << 16);
 }
 
 static inline uint32_t adler32_len_64(uint32_t adler, const unsigned char *buf, size_t len, uint32_t sum2) {
+#ifdef UNROLL_MORE
     while (len >= 16) {
         len -= 16;
         DO16(adler, sum2, buf);
         buf += 16;
+#else
+    while (len >= 8) {
+        len -= 8;
+        DO8(adler, sum2, buf, 0);
+        buf += 8;
+#endif
     }
     /* Process tail (len < 16).  */
     return adler32_len_16(adler, buf, len, sum2);