diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig index dfa8d65eff..3c1b01d3b8 100644 --- a/lib/std/child_process.zig +++ b/lib/std/child_process.zig @@ -697,7 +697,7 @@ pub const ChildProcess = struct { // "\Device\Null" or "\??\NUL" windows.OpenFile(&[_]u16{ '\\', 'D', 'e', 'v', 'i', 'c', 'e', '\\', 'N', 'u', 'l', 'l' }, .{ .access_mask = windows.GENERIC_READ | windows.GENERIC_WRITE | windows.SYNCHRONIZE, - .share_access = windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE, + .share_access = windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE | windows.FILE_SHARE_DELETE, .sa = &saAttr, .creation = windows.OPEN_EXISTING, }) catch |err| switch (err) { diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index 484e70d1de..192a0d4b3a 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -1325,7 +1325,7 @@ pub fn realpathW(self: Dir, pathname: []const u16, out_buffer: []u8) RealPathErr const w = windows; const access_mask = w.GENERIC_READ | w.SYNCHRONIZE; - const share_access = w.FILE_SHARE_READ; + const share_access = w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE; const creation = w.FILE_OPEN; const h_file = blk: { const res = w.OpenFile(pathname, .{ @@ -1598,7 +1598,7 @@ fn makeOpenDirAccessMaskW(self: Dir, sub_path_w: [*:0]const u16, access_mask: u3 &io, null, w.FILE_ATTRIBUTE_NORMAL, - w.FILE_SHARE_READ | w.FILE_SHARE_WRITE, + w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE, flags.create_disposition, w.FILE_DIRECTORY_FILE | w.FILE_SYNCHRONOUS_IO_NONALERT | w.FILE_OPEN_FOR_BACKUP_INTENT | open_reparse_point, null, diff --git a/lib/std/fs/test.zig b/lib/std/fs/test.zig index d1689dcff6..63e7968c64 100644 --- a/lib/std/fs/test.zig +++ b/lib/std/fs/test.zig @@ -262,7 +262,7 @@ test "File.stat on a File that is a symlink returns Kind.sym_link" { &io, null, windows.FILE_ATTRIBUTE_NORMAL, - windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE, + windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE | windows.FILE_SHARE_DELETE, windows.FILE_OPEN, // FILE_OPEN_REPARSE_POINT is the important thing here windows.FILE_OPEN_REPARSE_POINT | windows.FILE_DIRECTORY_FILE | windows.FILE_SYNCHRONOUS_IO_NONALERT | windows.FILE_OPEN_FOR_BACKUP_INTENT, diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 72078c0144..34f84bd5c2 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -217,7 +217,7 @@ pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) C &iosb, null, 0, - FILE_SHARE_READ | FILE_SHARE_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, null, @@ -283,7 +283,7 @@ pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) C &iosb, null, 0, - FILE_SHARE_READ | FILE_SHARE_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE, null, @@ -892,7 +892,7 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin &io, null, FILE_ATTRIBUTE_NORMAL, - FILE_SHARE_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, FILE_OPEN_REPARSE_POINT | FILE_SYNCHRONOUS_IO_NONALERT, null, @@ -1311,7 +1311,7 @@ pub fn GetFinalPathNameByHandle( const mgmt_path_u16 = std.unicode.utf8ToUtf16LeStringLiteral("\\??\\MountPointManager"); const mgmt_handle = OpenFile(mgmt_path_u16, .{ .access_mask = SYNCHRONIZE, - .share_access = FILE_SHARE_READ | FILE_SHARE_WRITE, + .share_access = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, .creation = FILE_OPEN, }) catch |err| switch (err) { error.IsDir => return error.Unexpected, diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 889cc663ec..196a268d7f 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -5403,7 +5403,7 @@ pub fn realpathW(pathname: []const u16, out_buffer: *[max_path_bytes]u8) RealPat const dir = fs.cwd().fd; const access_mask = w.GENERIC_READ | w.SYNCHRONIZE; - const share_access = w.FILE_SHARE_READ; + const share_access = w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE; const creation = w.FILE_OPEN; const h_file = blk: { const res = w.OpenFile(pathname, .{