From 2054e02e8ae4b304e06ff7f8e5ae3d4a46c3b07e Mon Sep 17 00:00:00 2001 From: Marek Kubica Date: Sun, 17 Feb 2013 00:36:56 +0100 Subject: [PATCH] Made calls to the finish_entry callback optional --- libarchive/archive_write.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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); -- 2.47.2