aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-08-20 17:34:34 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-08-20 19:41:23 +0200
commit4a98385b0aa3808ab05a1ebfbc90fd0bcd97c0d9 (patch)
treeb56c8c5ade284425e275733a963dc636ece63a55 /src
parente5e6eb983159df0a089e7d1c8efcea9006e253a9 (diff)
downloadzig-4a98385b0aa3808ab05a1ebfbc90fd0bcd97c0d9.tar.gz
zig-4a98385b0aa3808ab05a1ebfbc90fd0bcd97c0d9.zip
macho: do not leave file descriptors open if unused
This manifested in different `AccessDenied` errors on Windows when trying to do an atomic file copying in the compiler/linker.
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 020388cee8..7c04972e4c 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -273,7 +273,7 @@ pub fn openPath(allocator: Allocator, options: link.Options) !*MachO {
assert(options.target.ofmt == .macho);
const use_stage1 = build_options.have_stage1 and options.use_stage1;
- if (use_stage1 or options.emit == null) {
+ if (use_stage1 or options.emit == null or options.module == null) {
return createEmpty(allocator, options);
}
@@ -293,11 +293,11 @@ pub fn openPath(allocator: Allocator, options: link.Options) !*MachO {
});
}
- if (options.output_mode == .Lib and
- options.link_mode == .Static and self.base.intermediary_basename != null)
- {
- return self;
- }
+ if (self.base.intermediary_basename != null) switch (options.output_mode) {
+ .Obj => return self,
+ .Lib => if (options.link_mode == .Static) return self,
+ else => {},
+ };
const file = try emit.directory.handle.createFile(emit.sub_path, .{
.truncate = false,