mirror of
https://abf.rosa.ru/djam/xz.git
synced 2025-02-23 10:32:56 +00:00
43 lines
1.1 KiB
Diff
43 lines
1.1 KiB
Diff
diff -Naru xz-5.2.3/src/liblzma/lz/lz_encoder_mf.c xz-5.2.3.tpg/src/liblzma/lz/lz_encoder_mf.c
|
|
--- xz-5.2.3/src/liblzma/lz/lz_encoder_mf.c 2016-12-30 11:08:20.000000000 +0000
|
|
+++ xz-5.2.3.tpg/src/liblzma/lz/lz_encoder_mf.c 2017-10-23 15:45:34.970539050 +0000
|
|
@@ -464,22 +464,22 @@
|
|
|
|
uint32_t len0 = 0;
|
|
uint32_t len1 = 0;
|
|
+ uint32_t len2 = 0;
|
|
|
|
while (true) {
|
|
const uint32_t delta = pos - cur_match;
|
|
+ uint32_t len = len2;
|
|
if (depth-- == 0 || delta >= cyclic_size) {
|
|
*ptr0 = EMPTY_HASH_VALUE;
|
|
*ptr1 = EMPTY_HASH_VALUE;
|
|
return matches;
|
|
}
|
|
|
|
+ const uint8_t *const pb = cur - delta;
|
|
uint32_t *const pair = son + ((cyclic_pos - delta
|
|
+ (delta > cyclic_pos ? cyclic_size : 0))
|
|
<< 1);
|
|
|
|
- const uint8_t *const pb = cur - delta;
|
|
- uint32_t len = my_min(len0, len1);
|
|
-
|
|
if (pb[len] == cur[len]) {
|
|
len = lzma_memcmplen(pb, cur, len + 1, len_limit);
|
|
|
|
@@ -502,11 +502,13 @@
|
|
ptr1 = pair + 1;
|
|
cur_match = *ptr1;
|
|
len1 = len;
|
|
+ len2 = my_min(len0, len1);
|
|
} else {
|
|
*ptr0 = cur_match;
|
|
ptr0 = pair;
|
|
cur_match = *ptr0;
|
|
len0 = len;
|
|
+ len2 = my_min(len0, len1);
|
|
}
|
|
}
|
|
}
|