diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index 192a0d4b3aa8d81b28ee4c8271b1e115694debea..16b1cc2aaabac91fd64bad69ea76faa2a7757cd6 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -1217,10 +1217,13 @@ fn makeOpenPathAccessMaskW(self: Dir, sub_path: []const u8, access_mask: u32, no }, else => |e| return e, }; - // Don't leak the intermediate file handles - errdefer if (result) |*dir| dir.close(); component = it.next() orelse return result.?; + + // Don't leak the intermediate file handles + if (result) |*dir| { + dir.close(); + } } } diff --git a/lib/std/fs/test.zig b/lib/std/fs/test.zig index bd2f4e844c0a2899c295167e1ce9a0b23851c2f9..dda953e5e08d5da93787b6569ea86ef5f63d61bf 100644 --- a/lib/std/fs/test.zig +++ b/lib/std/fs/test.zig @@ -1161,7 +1161,8 @@ test "makepath existing directories" { defer tmp.cleanup(); try tmp.dir.makeDir("A"); - const tmpA = try tmp.dir.openDir("A", .{}); + var tmpA = try tmp.dir.openDir("A", .{}); + defer tmpA.close(); try tmpA.makeDir("B"); const testPath = "A" ++ fs.path.sep_str ++ "B" ++ fs.path.sep_str ++ "C";