diff --git a/libavutil/adler32.c b/libavutil/adler32.c
index ab0b86da74feaf27f5e5c0745359c8ba9cc0d109..1d814b4561616bcb66ccec412df108a45b704e11 100644
--- a/libavutil/adler32.c
+++ b/libavutil/adler32.c
@@ -25,15 +25,17 @@ unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigne
     if (buf == NULL) return 1L;
 
     while (len > 0) {
-        k = len < NMAX ? len : NMAX;
+        k = FFMIN(len, NMAX);
         len -= k;
+#ifndef CONFIG_SMALL
         while (k >= 16) {
             DO16(buf);
             k -= 16;
         }
-        if (k != 0) do {
+#endif
+        while(k--) {
             DO1(buf);
-        } while (--k);
+        }
         s1 %= BASE;
         s2 %= BASE;
     }