]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
liblzma: Add more uses of lzma_memcmplen() to the normal mode of LZMA.
authorLasse Collin <lasse.collin@tukaani.org>
Fri, 21 Feb 2020 15:40:02 +0000 (17:40 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Fri, 21 Feb 2020 15:40:02 +0000 (17:40 +0200)
This gives a tiny encoder speed improvement. This could have been done
in 2014 after the commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 but
it was forgotten.

src/liblzma/lzma/lzma_encoder_optimum_normal.c

index 59f77343ed793bd662c7b17fb0977a267b82df32..101c8d47900875018c7c523e47f182f6bad95036 100644 (file)
@@ -636,9 +636,10 @@ helper2(lzma_lzma1_encoder *coder, uint32_t *reps, const uint8_t *buf,
                uint32_t len_test_2 = len_test + 1;
                const uint32_t limit = my_min(buf_avail_full,
                                len_test_2 + nice_len);
-               for (; len_test_2 < limit
-                               && buf[len_test_2] == buf_back[len_test_2];
-                               ++len_test_2) ;
+               // NOTE: len_test_2 may be greater than limit so the call to
+               // lzma_memcmplen() must be done conditionally.
+               if (len_test_2 < limit)
+                       len_test_2 = lzma_memcmplen(buf, buf_back, len_test_2, limit);
 
                len_test_2 -= len_test + 1;
 
@@ -732,9 +733,12 @@ helper2(lzma_lzma1_encoder *coder, uint32_t *reps, const uint8_t *buf,
                                const uint32_t limit = my_min(buf_avail_full,
                                                len_test_2 + nice_len);
 
-                               for (; len_test_2 < limit &&
-                                               buf[len_test_2] == buf_back[len_test_2];
-                                               ++len_test_2) ;
+                               // NOTE: len_test_2 may be greater than limit
+                               // so the call to lzma_memcmplen() must be
+                               // done conditionally.
+                               if (len_test_2 < limit)
+                                       len_test_2 = lzma_memcmplen(buf, buf_back,
+                                                       len_test_2, limit);
 
                                len_test_2 -= len_test + 1;