]> granicus.if.org Git - xz/commitdiff
xz: Fix the test when to read more input.
authorLasse Collin <lasse.collin@tukaani.org>
Thu, 4 Jul 2013 10:25:11 +0000 (13:25 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 4 Jul 2013 10:25:11 +0000 (13:25 +0300)
Testing for end of file was no longer correct after full flushing
became possible with --block-size=SIZE and --block-list=SIZES.
There was no bug in practice though because xz just made a few
unneeded zero-byte reads.

src/xz/coder.c

index 897ff6a9bfe0257b9bedcb7ae44ba048c34e790f..d29e40f497dde92afd8e23f3ff09f672e975c7cf 100644 (file)
@@ -565,9 +565,9 @@ coder_normal(file_pair *pair)
        strm.avail_out = IO_BUFFER_SIZE;
 
        while (!user_abort) {
-               // Fill the input buffer if it is empty and we haven't reached
-               // end of file yet.
-               if (strm.avail_in == 0 && !pair->src_eof) {
+               // Fill the input buffer if it is empty and we aren't
+               // flushing or finishing.
+               if (strm.avail_in == 0 && action == LZMA_RUN) {
                        strm.next_in = in_buf.u8;
                        strm.avail_in = io_read(pair, &in_buf,
                                        my_min(block_remaining,