liblzma: Fix a memory leak in stream_encoder.c.
authorLasse Collin <lasse.collin@tukaani.org>
Sat, 2 Apr 2011 11:49:56 +0000 (14:49 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Sat, 2 Apr 2011 11:49:56 +0000 (14:49 +0300)
It leaks old filter options structures (hundred bytes or so)
every time the lzma_stream is reinitialized. With the xz tool,
this happens when compressing multiple files.

src/liblzma/common/stream_encoder.c

index 48d91da..97a7a23 100644 (file)
@@ -280,6 +280,7 @@ lzma_stream_encoder_init(lzma_next_coder *next, lzma_allocator *allocator,
                next->end = &stream_encoder_end;
                next->update = &stream_encoder_update;
 
+               next->coder->filters[0].id = LZMA_VLI_UNKNOWN;
                next->coder->block_encoder = LZMA_NEXT_CODER_INIT;
                next->coder->index_encoder = LZMA_NEXT_CODER_INIT;
                next->coder->index = NULL;
@@ -289,7 +290,6 @@ lzma_stream_encoder_init(lzma_next_coder *next, lzma_allocator *allocator,
        next->coder->sequence = SEQ_STREAM_HEADER;
        next->coder->block_options.version = 0;
        next->coder->block_options.check = check;
-       next->coder->filters[0].id = LZMA_VLI_UNKNOWN;
 
        // Initialize the Index
        lzma_index_end(next->coder->index, allocator);