From: John Starks Date: Thu, 2 Nov 2017 17:03:28 +0000 (-0700) Subject: Windows: set errno on CreateFileW failure X-Git-Tag: v3.3.3~24^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=106556b97f00096766bd170e2adbaf1b10606dd1;p=thirdparty%2Flibarchive.git Windows: set errno on CreateFileW failure When CreateFileW fails in next_entry(), it reads from errno to set the archive error, but errno is not set by CreateFileW. Add a call to la_dosmaperr to set errno properly first. --- diff --git a/libarchive/archive_read_disk_windows.c b/libarchive/archive_read_disk_windows.c index a69e8c377..8fe348524 100644 --- a/libarchive/archive_read_disk_windows.c +++ b/libarchive/archive_read_disk_windows.c @@ -923,6 +923,7 @@ next_entry(struct archive_read_disk *a, struct tree *t, t->entry_fh = CreateFileW(tree_current_access_path(t), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, flags, NULL); if (t->entry_fh == INVALID_HANDLE_VALUE) { + la_dosmaperr(GetLastError()); archive_set_error(&a->archive, errno, "Couldn't open %ls", tree_current_path(a->tree)); return (ARCHIVE_FAILED);