liblzma: Fix missing normalization in rc_encode_dummy().
Without this fix it could attempt to create too much output.
This commit is contained in:
parent
601ec0311e
commit
421b0aa352
|
@ -274,7 +274,7 @@ rc_encode_dummy(const lzma_range_encoder *rc, size_t out_size)
|
||||||
|
|
||||||
size_t pos = rc->pos;
|
size_t pos = rc->pos;
|
||||||
|
|
||||||
while (pos < rc->count) {
|
while (true) {
|
||||||
// Normalize
|
// Normalize
|
||||||
if (range < RC_TOP_VALUE) {
|
if (range < RC_TOP_VALUE) {
|
||||||
if (rc_shift_low_dummy(&low, &cache_size, &cache,
|
if (rc_shift_low_dummy(&low, &cache_size, &cache,
|
||||||
|
@ -284,6 +284,11 @@ rc_encode_dummy(const lzma_range_encoder *rc, size_t out_size)
|
||||||
range <<= RC_SHIFT_BITS;
|
range <<= RC_SHIFT_BITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This check is here because the normalization above must
|
||||||
|
// be done before flushing the last bytes.
|
||||||
|
if (pos == rc->count)
|
||||||
|
break;
|
||||||
|
|
||||||
// Encode a bit
|
// Encode a bit
|
||||||
switch (rc->symbols[pos]) {
|
switch (rc->symbols[pos]) {
|
||||||
case RC_BIT_0: {
|
case RC_BIT_0: {
|
||||||
|
|
Loading…
Reference in New Issue