authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-23 22:06:17-04:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-23 22:06:17-04:00
log594b3faaa34f6f464a5c543489cf57fb89070999
treeeb66ef9d352da6c5eca287fbaf5258e89d3e6a22
parentd94b3e7691f15b8bc6993cc6999d0f439255ed80

MappedFile: explicitly write the mtime when flushing, as mapped file writes don't do this automatically on windows


1 files changed, 7 insertions(+), 1 deletions(-)

src/link/MappedFile.zig+7-1
......@@ -1314,11 +1314,12 @@ pub fn unmap(mf: *MappedFile) void {
13141314}
13151315
13161316pub fn flush(mf: *MappedFile) (Io.Cancelable || error{MappedFileIo})!void {
1317 mf.memory_map.write(mf.io) catch |err| switch (err) {
1317 mf.flushInner() catch |err| switch (err) {
13181318 error.Canceled => |e| return e,
13191319
13201320 error.WouldBlock, // file was not opened as non-blocking
13211321 error.NotOpenForWriting, // we definitely opened the file for writing
1322 error.ReadOnlyFileSystem,
13221323 => {
13231324 mf.io_err = error.Unexpected;
13241325 return error.MappedFileIo;
......@@ -1331,6 +1332,11 @@ pub fn flush(mf: *MappedFile) (Io.Cancelable || error{MappedFileIo})!void {
13311332 };
13321333}
13331334
1335fn flushInner(mf: *MappedFile) (Io.File.WritePositionalError || Io.File.SetTimestampsError)!void {
1336 try mf.memory_map.write(mf.io);
1337 if (is_windows) try mf.memory_map.file.setTimestampsNow(mf.io);
1338}
1339
13341340fn verify(mf: *MappedFile) void {
13351341 const root = Node.Index.root.get(mf);
13361342 assert(root.parent == .none);