From 594b3faaa34f6f464a5c543489cf57fb89070999 Mon Sep 17 00:00:00 2001 From: kcbanner Date: Tue, 23 Jun 2026 22:06:17 -0400 Subject: [PATCH] MappedFile: explicitly write the mtime when flushing, as mapped file writes don't do this automatically on windows --- src/link/MappedFile.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/link/MappedFile.zig b/src/link/MappedFile.zig index 03b92315aa32ebf8a9baa8a4960354292a5d4634..74c1ce432999043d8fe5ad0331d8ba4128973abd 100644 --- a/src/link/MappedFile.zig +++ b/src/link/MappedFile.zig @@ -1314,11 +1314,12 @@ pub fn unmap(mf: *MappedFile) void { } pub fn flush(mf: *MappedFile) (Io.Cancelable || error{MappedFileIo})!void { - mf.memory_map.write(mf.io) catch |err| switch (err) { + mf.flushInner() catch |err| switch (err) { error.Canceled => |e| return e, error.WouldBlock, // file was not opened as non-blocking error.NotOpenForWriting, // we definitely opened the file for writing + error.ReadOnlyFileSystem, => { mf.io_err = error.Unexpected; return error.MappedFileIo; @@ -1331,6 +1332,11 @@ pub fn flush(mf: *MappedFile) (Io.Cancelable || error{MappedFileIo})!void { }; } +fn flushInner(mf: *MappedFile) (Io.File.WritePositionalError || Io.File.SetTimestampsError)!void { + try mf.memory_map.write(mf.io); + if (is_windows) try mf.memory_map.file.setTimestampsNow(mf.io); +} + fn verify(mf: *MappedFile) void { const root = Node.Index.root.get(mf); assert(root.parent == .none); -- 2.54.0