From f7b6957fb4e6c70e6917abf519943f3f5d3e5660 Mon Sep 17 00:00:00 2001 From: Ryan Liptak Date: Thu, 4 Jun 2020 16:34:48 -0700 Subject: [PATCH] Windows: Fix std.fs.Dir.deleteDir() deleting files Would previously delete files, now correctly returns error.NotDir. Fixes #5536 --- lib/std/os.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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), } }