diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-07-25 18:26:06 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-07-25 22:46:43 -0700 |
| commit | 20ea44ef107828d76692e610e1ca62ee231fb4a9 (patch) | |
| tree | 3cdd9e3816f57c9b5e2469af238c69e2520e68cb /src/link/MachO.zig | |
| parent | cff5d9c805aa3433cc2562c3cb29bd3201817214 (diff) | |
| download | zig-20ea44ef107828d76692e610e1ca62ee231fb4a9.tar.gz zig-20ea44ef107828d76692e610e1ca62ee231fb4a9.zip | |
macho: fix memory leak and refactor Target usage
Diffstat (limited to 'src/link/MachO.zig')
| -rw-r--r-- | src/link/MachO.zig | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 0f2cbfa844..218a866c01 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -1415,7 +1415,7 @@ fn parseObject(self: *MachO, path: []const u8) !bool { .mtime = mtime, }; - object.parse(self.base.allocator, self.base.options.target) catch |err| switch (err) { + object.parse(self.base.allocator, self.base.options.target.cpu.arch) catch |err| switch (err) { error.EndOfStream, error.NotObject => { object.deinit(self.base.allocator); return false; @@ -1443,7 +1443,7 @@ fn parseArchive(self: *MachO, path: []const u8, force_load: bool) !bool { .file = file, }; - archive.parse(self.base.allocator, self.base.options.target) catch |err| switch (err) { + archive.parse(self.base.allocator, self.base.options.target.cpu.arch) catch |err| switch (err) { error.EndOfStream, error.NotArchive => { archive.deinit(self.base.allocator); return false; @@ -1463,7 +1463,11 @@ fn parseArchive(self: *MachO, path: []const u8, force_load: bool) !bool { } for (offsets.keys()) |off| { const object = try self.objects.addOne(self.base.allocator); - object.* = try archive.parseObject(self.base.allocator, self.base.options.target, off); + object.* = try archive.parseObject( + self.base.allocator, + self.base.options.target.cpu.arch, + off, + ); } } else { try self.archives.append(self.base.allocator, archive); @@ -1511,7 +1515,7 @@ pub fn parseDylib( dylib.parse( self.base.allocator, - self.base.options.target, + self.base.options.target.cpu.arch, dylib_id, dependent_libs, ) catch |err| switch (err) { @@ -3126,7 +3130,11 @@ fn resolveSymbolsInArchives(self: *MachO) !void { const object_id = @intCast(u16, self.objects.items.len); const object = try self.objects.addOne(self.base.allocator); - object.* = try archive.parseObject(self.base.allocator, self.base.options.target, offsets.items[0]); + object.* = try archive.parseObject( + self.base.allocator, + self.base.options.target.cpu.arch, + offsets.items[0], + ); try self.resolveSymbolsInObject(object, object_id); continue :loop; |
