aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorCasey Banner <kcbanner@gmail.com>2022-12-06 23:15:54 -0500
committerGitHub <noreply@github.com>2022-12-06 23:15:54 -0500
commit8ccb9a6ad327a4d7fbc321b33d4aa66a27a1f5ee (patch)
tree13556a64c4a9af587f12605085b4c880334772e3 /src/main.zig
parent14416b522e697997f21dd634bfdc70fbff59471b (diff)
downloadzig-8ccb9a6ad327a4d7fbc321b33d4aa66a27a1f5ee.tar.gz
zig-8ccb9a6ad327a4d7fbc321b33d4aa66a27a1f5ee.zip
cache: Fix LockViolation during C compilation paths (#13591)
- C compilation flows didn't hold an exclusive lock on the cache manifest file when writing to it in all cases - On windows, explicitly unlock the file lock before closing it
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
index 067a824631..7004576f46 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -3505,6 +3505,7 @@ fn cmdTranslateC(comp: *Compilation, arena: Allocator, enable_cache: bool) !void
const translated_zig_basename = try std.fmt.allocPrint(arena, "{s}.zig", .{comp.bin_file.options.root_name});
var man: Cache.Manifest = comp.obtainCObjectCacheManifest();
+ man.want_shared_lock = false;
defer if (enable_cache) man.deinit();
man.hash.add(@as(u16, 0xb945)); // Random number to distinguish translate-c from compiling C objects