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:
Lasse Collin 2008-01-17 13:14:20 +02:00
parent bc0b945ca3
commit f88590e001
1 changed files with 6 additions and 0 deletions

View File

@ -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: {