mirror of https://git.tukaani.org/xz.git
Fix Subblock docoder: If Subblock filter was used with known
Uncompressed Size, and the last output byte was from RLE, the code didn't stop decoding as it should have done.
This commit is contained in:
parent
bc0b945ca3
commit
f88590e001
|
@ -363,6 +363,7 @@ decode_buffer(lzma_coder *coder, lzma_allocator *allocator,
|
||||||
return LZMA_DATA_ERROR;
|
return LZMA_DATA_ERROR;
|
||||||
|
|
||||||
if (coder->repeat.count == 0) {
|
if (coder->repeat.count == 0) {
|
||||||
|
assert(coder->subfilter.code == NULL);
|
||||||
if (coder->uncompressed_size == 0)
|
if (coder->uncompressed_size == 0)
|
||||||
return LZMA_STREAM_END;
|
return LZMA_STREAM_END;
|
||||||
} else {
|
} else {
|
||||||
|
@ -424,6 +425,11 @@ decode_buffer(lzma_coder *coder, lzma_allocator *allocator,
|
||||||
}
|
}
|
||||||
} while (*out_pos < out_size);
|
} while (*out_pos < out_size);
|
||||||
|
|
||||||
|
// Check if we have decoded all the data.
|
||||||
|
if (coder->uncompressed_size == 0
|
||||||
|
&& coder->subfilter.code == NULL)
|
||||||
|
return LZMA_STREAM_END;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SEQ_DATA: {
|
case SEQ_DATA: {
|
||||||
|
|
Loading…
Reference in New Issue