From ede675f9ac1ca82a7d7c290324adba672118bc8d Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 31 Aug 2008 11:47:01 +0300 Subject: Fix wrong pointer calculation in LZMA encoder. --- src/liblzma/lzma/lzma_encoder.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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, -- cgit v1.2.3