From: Marek Kubica Date: Sat, 16 Feb 2013 23:36:56 +0000 (+0100) Subject: Made calls to the finish_entry callback optional X-Git-Tag: v3.1.900a~360^2~16^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F38%2Fhead;p=thirdparty%2Flibarchive.git Made calls to the finish_entry callback optional --- diff --git a/libarchive/archive_write.c b/libarchive/archive_write.c index a3d1a3380..fd2ffb9e8 100644 --- a/libarchive/archive_write.c +++ b/libarchive/archive_write.c @@ -503,8 +503,9 @@ _archive_write_close(struct archive *_a) archive_clear_error(&a->archive); - /* Finish the last entry. */ - if (a->archive.state == ARCHIVE_STATE_DATA) + /* Finish the last entry if a finish callback is specified */ + if (a->archive.state == ARCHIVE_STATE_DATA + && a->format_finish_entry != NULL) r = ((a->format_finish_entry)(a)); /* Finish off the archive. */ @@ -658,7 +659,8 @@ _archive_write_finish_entry(struct archive *_a) archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA, "archive_write_finish_entry"); - if (a->archive.state & ARCHIVE_STATE_DATA) + if (a->archive.state & ARCHIVE_STATE_DATA + && a->format_finish_entry != NULL) ret = (a->format_finish_entry)(a); a->archive.state = ARCHIVE_STATE_HEADER; return (ret);