diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2015-10-12 20:45:15 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2015-10-12 20:45:15 +0300 |
commit | 21515d79d778b8730a434f151b07202d52a04611 (patch) | |
tree | 9e06ecb13ced9bea05ffdbdb9496beadda93e44f | |
parent | liblzma: Add a note to index.c for those using static analyzers. (diff) | |
download | xz-21515d79d778b8730a434f151b07202d52a04611.tar.xz |
liblzma: Fix lzma_index_dup() for empty Streams.
Stream Flags and Stream Padding weren't copied from
empty Streams.
-rw-r--r-- | src/liblzma/common/index.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c index bc1ef292..26e4e519 100644 --- a/src/liblzma/common/index.c +++ b/src/liblzma/common/index.c @@ -872,11 +872,8 @@ index_dup_stream(const index_stream *src, const lzma_allocator *allocator) index_stream *dest = index_stream_init(src->node.compressed_base, src->node.uncompressed_base, src->number, src->block_number_base, allocator); - - // Return immediately if allocation failed or if there are - // no groups to duplicate. - if (dest == NULL || src->groups.leftmost == NULL) - return dest; + if (dest == NULL) + return NULL; // Copy the overall information. dest->record_count = src->record_count; @@ -884,6 +881,10 @@ index_dup_stream(const index_stream *src, const lzma_allocator *allocator) dest->stream_flags = src->stream_flags; dest->stream_padding = src->stream_padding; + // Return if there are no groups to duplicate. + if (src->groups.leftmost == NULL) + return dest; + // Allocate memory for the Records. We put all the Records into // a single group. It's simplest and also tends to make // lzma_index_locate() a little bit faster with very big Indexes. |