summaryrefslogtreecommitdiff
path: root/libarchive/archive_write_add_filter_bzip2.c
diff options
context:
space:
mode:
Diffstat (limited to 'libarchive/archive_write_add_filter_bzip2.c')
-rw-r--r--libarchive/archive_write_add_filter_bzip2.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/libarchive/archive_write_add_filter_bzip2.c b/libarchive/archive_write_add_filter_bzip2.c
index 9bb19082..6d1b3567 100644
--- a/libarchive/archive_write_add_filter_bzip2.c
+++ b/libarchive/archive_write_add_filter_bzip2.c
@@ -241,21 +241,15 @@ static int
archive_compressor_bzip2_close(struct archive_write_filter *f)
{
struct private_data *data = (struct private_data *)f->data;
- ssize_t bytes_written;
- int ret;
-
- if (data == NULL)
- return (ARCHIVE_OK);
+ int ret, r1;
/* Finish compression cycle. */
ret = drive_compressor(f, data, 1);
if (ret == ARCHIVE_OK) {
/* Write the last block */
- bytes_written = __archive_write_filter(f->next_filter,
+ ret = __archive_write_filter(f->next_filter,
data->compressed,
data->compressed_buffer_size - data->stream.avail_out);
- if (bytes_written <= 0)
- ret = ARCHIVE_FATAL;
}
switch (BZ2_bzCompressEnd(&(data->stream))) {
@@ -266,7 +260,9 @@ archive_compressor_bzip2_close(struct archive_write_filter *f)
"Failed to clean up compressor");
ret = ARCHIVE_FATAL;
}
- return (ARCHIVE_OK);
+
+ r1 = __archive_write_close_filter(f->next_filter);
+ return (r1 < ret ? r1 : ret);
}
static int