]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Properly return an error code; do not overwirte an error code with a return code
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Mon, 21 Mar 2011 20:21:39 +0000 (16:21 -0400)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Mon, 21 Mar 2011 20:21:39 +0000 (16:21 -0400)
of __archive_write_close_filter();

Found with Clang Static Analyzer.

SVN-Revision: 3045

libarchive/archive_write_add_filter_compress.c

index f8e6258ebcfdb4e5e10a8b5ca8447451dc5331d3..d42ec6ca3cc381e54c9c748d5a9557cfd82ae556 100644 (file)
@@ -416,7 +416,7 @@ static int
 archive_compressor_compress_close(struct archive_write_filter *f)
 {
        struct private_data *state = (struct private_data *)f->data;
-       int ret;
+       int ret, ret2;
 
        ret = output_code(f, state->cur_code);
        if (ret != ARCHIVE_OK)
@@ -429,7 +429,9 @@ archive_compressor_compress_close(struct archive_write_filter *f)
        ret = __archive_write_filter(f->next_filter,
            state->compressed, state->compressed_offset);
 cleanup:
-       ret = __archive_write_close_filter(f->next_filter);
+       ret2 = __archive_write_close_filter(f->next_filter);
+       if (ret > ret2)
+               ret = ret2;
        free(state->compressed);
        free(state);
        return (ret);