From 7e549540527fec891bc67d5e657f82b7087530a3 Mon Sep 17 00:00:00 2001 From: Quetzal Bradley Date: Sun, 17 Feb 2019 13:08:08 -0800 Subject: fix openWriteNoClobber and add test --- std/io_test.zig | 11 +++++++++++ std/os/file.zig | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'std') diff --git a/std/io_test.zig b/std/io_test.zig index fb6e0ae7e9..87b970edf8 100644 --- a/std/io_test.zig +++ b/std/io_test.zig @@ -29,6 +29,17 @@ test "write a file, read it, then delete it" { try st.print("end"); try buf_stream.flush(); } + + { + // make sure openWriteNoClobber doesn't harm the file + if (os.File.openWriteNoClobber(tmp_file_name, os.File.default_mode)) |file| { + unreachable; + } + else |err| { + std.debug.assert(err == os.File.OpenError.PathAlreadyExists); + } + } + { var file = try os.File.openRead(tmp_file_name); defer file.close(); diff --git a/std/os/file.zig b/std/os/file.zig index 2ae547c694..cdd28b233c 100644 --- a/std/os/file.zig +++ b/std/os/file.zig @@ -105,7 +105,7 @@ pub const File = struct { pub fn openWriteNoClobber(path: []const u8, file_mode: Mode) OpenError!File { if (is_posix) { const path_c = try os.toPosixPath(path); - return openWriteNoClobberC(path_c, file_mode); + return openWriteNoClobberC(&path_c, file_mode); } else if (is_windows) { const path_w = try windows_util.sliceToPrefixedFileW(path); return openWriteNoClobberW(&path_w, file_mode); -- cgit v1.2.3