aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os.zig
diff options
context:
space:
mode:
authorRyan Liptak <squeek502@hotmail.com>2020-06-04 16:34:48 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-06-04 22:51:58 -0400
commitf7b6957fb4e6c70e6917abf519943f3f5d3e5660 (patch)
tree0dc5066c4bb1116c75bba12d4f8b551f2819a41d /lib/std/os.zig
parentfd067fbe8b14c445ed764da15fff5163156126df (diff)
downloadzig-f7b6957fb4e6c70e6917abf519943f3f5d3e5660.tar.gz
zig-f7b6957fb4e6c70e6917abf519943f3f5d3e5660.zip
Windows: Fix std.fs.Dir.deleteDir() deleting files
Would previously delete files, now correctly returns error.NotDir. Fixes #5536
Diffstat (limited to 'lib/std/os.zig')
-rw-r--r--lib/std/os.zig3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig
index c56f6e0db0..0558390b9e 100644
--- a/lib/std/os.zig
+++ b/lib/std/os.zig
@@ -1734,7 +1734,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr
const want_rmdir_behavior = (flags & AT_REMOVEDIR) != 0;
const create_options_flags = if (want_rmdir_behavior)
- @as(w.ULONG, w.FILE_DELETE_ON_CLOSE)
+ @as(w.ULONG, w.FILE_DELETE_ON_CLOSE | w.FILE_DIRECTORY_FILE)
else
@as(w.ULONG, w.FILE_DELETE_ON_CLOSE | w.FILE_NON_DIRECTORY_FILE);
@@ -1787,6 +1787,7 @@ pub fn unlinkatW(dirfd: fd_t, sub_path_w: [*:0]const u16, flags: u32) UnlinkatEr
.OBJECT_NAME_NOT_FOUND => return error.FileNotFound,
.INVALID_PARAMETER => unreachable,
.FILE_IS_A_DIRECTORY => return error.IsDir,
+ .NOT_A_DIRECTORY => return error.NotDir,
else => return w.unexpectedStatus(rc),
}
}