diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2008-08-31 11:47:01 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2008-08-31 11:47:01 +0300 |
commit | ede675f9ac1ca82a7d7c290324adba672118bc8d (patch) | |
tree | e264ef6546a47d93c70859a9def523ec3b1baa07 /src/liblzma | |
parent | Sort of garbage collection commit. :-| Many things are still (diff) | |
download | xz-ede675f9ac1ca82a7d7c290324adba672118bc8d.tar.xz |
Fix wrong pointer calculation in LZMA encoder.
Diffstat (limited to '')
-rw-r--r-- | src/liblzma/lzma/lzma_encoder.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/liblzma/lzma/lzma_encoder.c b/src/liblzma/lzma/lzma_encoder.c index a84801e7..5302a707 100644 --- a/src/liblzma/lzma/lzma_encoder.c +++ b/src/liblzma/lzma/lzma_encoder.c @@ -165,8 +165,10 @@ match(lzma_coder *coder, const uint32_t pos_state, const uint32_t pos_reduced = distance - base; if (pos_slot < END_POS_MODEL_INDEX) { + // Careful here: base - pos_slot - 1 can be -1, but + // rc_bittree_reverse starts at probs[1], not probs[0]. rc_bittree_reverse(&coder->rc, - &coder->pos_special[base - pos_slot - 1], + coder->pos_special + base - pos_slot - 1, footer_bits, pos_reduced); } else { rc_direct(&coder->rc, pos_reduced >> ALIGN_BITS, |