diff --git a/src/liblzma/common/stream_buffer_decoder.c b/src/liblzma/common/stream_buffer_decoder.c index c4f91fb4..bbf20046 100644 --- a/src/liblzma/common/stream_buffer_decoder.c +++ b/src/liblzma/common/stream_buffer_decoder.c @@ -50,10 +50,6 @@ lzma_stream_buffer_decode(uint64_t *memlimit, uint32_t flags, if (ret == LZMA_STREAM_END) { ret = LZMA_OK; } else { - // Something went wrong, restore the positions. - *in_pos = in_start; - *out_pos = out_start; - if (ret == LZMA_OK) { // Either the input was truncated or the // output buffer was too small. @@ -78,6 +74,10 @@ lzma_stream_buffer_decode(uint64_t *memlimit, uint32_t flags, stream_decoder.coder, memlimit, &memusage, 0); } + + // Something went wrong, restore the positions. + *in_pos = in_start; + *out_pos = out_start; } }