Small LZMA_SYNC_FLUSH fixes to Block and Single-Stream encoders.
authorLasse Collin <lasse.collin@tukaani.org>
Mon, 14 Jan 2008 09:56:41 +0000 (11:56 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Mon, 14 Jan 2008 09:56:41 +0000 (11:56 +0200)
src/liblzma/common/block_encoder.c
src/liblzma/common/stream_encoder_single.c

index 22451b9..4dc9f6b 100644 (file)
@@ -94,7 +94,7 @@ block_encode(lzma_coder *coder, lzma_allocator *allocator,
 
        // Main loop
        while (*out_pos < out_size
-                       && (*in_pos < in_size || action == LZMA_FINISH))
+                       && (*in_pos < in_size || action != LZMA_RUN))
        switch (coder->sequence) {
        case SEQ_CODE: {
                const size_t in_start = *in_pos;
@@ -121,7 +121,7 @@ block_encode(lzma_coder *coder, lzma_allocator *allocator,
                lzma_check_update(&coder->check, coder->options->check,
                                in + in_start, in_used);
 
-               if (ret != LZMA_STREAM_END)
+               if (ret != LZMA_STREAM_END || action == LZMA_SYNC_FLUSH)
                        return ret;
 
                assert(*in_pos == in_size);
index cd835dc..d93e716 100644 (file)
@@ -212,6 +212,7 @@ lzma_stream_encoder_single(
        lzma_next_strm_init(strm, stream_encoder_init, options);
 
        strm->internal->supported_actions[LZMA_RUN] = true;
+       strm->internal->supported_actions[LZMA_SYNC_FLUSH] = true;
        strm->internal->supported_actions[LZMA_FINISH] = true;
 
        return LZMA_OK;