]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Add archive_write_disk_windows.c counterpart to previous commit
authorMartin Matuska <martin@matuska.org>
Mon, 2 Mar 2020 01:58:57 +0000 (02:58 +0100)
committerMartin Matuska <martin@matuska.org>
Mon, 2 Mar 2020 01:59:35 +0000 (02:59 +0100)
libarchive/archive_write_disk_windows.c

index 1d1275df3b5711651d29c3fde79445747de29ec9..4b703492b147a4408a225d2e329b44bd51b3e035 100644 (file)
@@ -1174,6 +1174,7 @@ _archive_write_disk_finish_entry(struct archive *_a)
 {
        struct archive_write_disk *a = (struct archive_write_disk *)_a;
        int ret = ARCHIVE_OK;
+       int oerrno;
 
        archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
            ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
@@ -1281,7 +1282,9 @@ _archive_write_disk_finish_entry(struct archive *_a)
                        /* Windows does not support atomic rename */
                        disk_unlink(a->name);
                        if (_wrename(a->tmpname, a->name) != 0) {
+                               oerrno = errno;
                                disk_unlink(a->tmpname);
+                               errno = oerrno;
                                archive_set_error(&a->archive, errno,
                                    "Failed to safe write");
                                ret = ARCHIVE_FATAL;