diff options
Diffstat (limited to 'lib/libarchive/archive_write_set_compression_gzip.c')
-rw-r--r-- | lib/libarchive/archive_write_set_compression_gzip.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/libarchive/archive_write_set_compression_gzip.c b/lib/libarchive/archive_write_set_compression_gzip.c index 8c6d427..b2e4f80 100644 --- a/lib/libarchive/archive_write_set_compression_gzip.c +++ b/lib/libarchive/archive_write_set_compression_gzip.c @@ -378,6 +378,10 @@ drive_compressor(struct archive_write *a, struct private_data *state, int finish state->stream.avail_out = bytes_written; } + /* If there's nothing to do, we're done. */ + if (!finishing && state->stream.avail_in == 0) + return (ARCHIVE_OK); + ret = deflate(&(state->stream), finishing ? Z_FINISH : Z_NO_FLUSH ); @@ -396,7 +400,9 @@ drive_compressor(struct archive_write *a, struct private_data *state, int finish default: /* Any other return value indicates an error. */ archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "GZip compression failed"); + "GZip compression failed:" + " deflate() call returned status %d", + ret); return (ARCHIVE_FATAL); } } |