]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Made calls to the finish_entry callback optional 38/head
authorMarek Kubica <marek@xivilization.net>
Sat, 16 Feb 2013 23:36:56 +0000 (00:36 +0100)
committerMarek Kubica <marek@xivilization.net>
Sat, 16 Feb 2013 23:41:21 +0000 (00:41 +0100)
libarchive/archive_write.c

index a3d1a3380c05b8ac3799211ce4bbe2d4b8b3676b..fd2ffb9e8bbb7361fa2952e60641498d126b50e8 100644 (file)
@@ -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);