authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2020-06-04 16:34:48-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-06-04 22:51:58-04:00
logf7b6957fb4e6c70e6917abf519943f3f5d3e5660
tree0dc5066c4bb1116c75bba12d4f8b551f2819a41d
parentfd067fbe8b14c445ed764da15fff5163156126df

Windows: Fix std.fs.Dir.deleteDir() deleting files

Would previously delete files, now correctly returns error.NotDir. Fixes #5536

1 files changed, 2 insertions(+), 1 deletions(-)

lib/std/os.zig+2-1
...@@ -1734,7 +1734,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr...@@ -1734,7 +1734,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr
17341734
1735 const want_rmdir_behavior = (flags & AT_REMOVEDIR) != 0;1735 const want_rmdir_behavior = (flags & AT_REMOVEDIR) != 0;
1736 const create_options_flags = if (want_rmdir_behavior)1736 const create_options_flags = if (want_rmdir_behavior)
1737 @as(w.ULONG, w.FILE_DELETE_ON_CLOSE)1737 @as(w.ULONG, w.FILE_DELETE_ON_CLOSE | w.FILE_DIRECTORY_FILE)
1738 else1738 else
1739 @as(w.ULONG, w.FILE_DELETE_ON_CLOSE | w.FILE_NON_DIRECTORY_FILE);1739 @as(w.ULONG, w.FILE_DELETE_ON_CLOSE | w.FILE_NON_DIRECTORY_FILE);
17401740
...@@ -1787,6 +1787,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr...@@ -1787,6 +1787,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr
1787 .OBJECT_NAME_NOT_FOUND => return error.FileNotFound,1787 .OBJECT_NAME_NOT_FOUND => return error.FileNotFound,
1788 .INVALID_PARAMETER => unreachable,1788 .INVALID_PARAMETER => unreachable,
1789 .FILE_IS_A_DIRECTORY => return error.IsDir,1789 .FILE_IS_A_DIRECTORY => return error.IsDir,
1790 .NOT_A_DIRECTORY => return error.NotDir,
1790 else => return w.unexpectedStatus(rc),1791 else => return w.unexpectedStatus(rc),
1791 }1792 }
1792}1793}