aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-07-22 13:35:55 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-07-22 13:35:55 +0200
commit8541119e9b57b274fa01f1dae101adca5ac2245f (patch)
tree1c9ea570f8d314be721529f11f2c8b3094ba9a0b /src/link
parent96fa29b90f16ea12a4fea944636f5c5de73160fc (diff)
downloadzig-8541119e9b57b274fa01f1dae101adca5ac2245f.tar.gz
zig-8541119e9b57b274fa01f1dae101adca5ac2245f.zip
macho: handle empty string in ZigObject.getString
Diffstat (limited to 'src/link')
-rw-r--r--src/link/MachO/Atom.zig1
-rw-r--r--src/link/MachO/Symbol.zig1
-rw-r--r--src/link/MachO/ZigObject.zig5
3 files changed, 5 insertions, 2 deletions
diff --git a/src/link/MachO/Atom.zig b/src/link/MachO/Atom.zig
index 1473c682ac..8a47a30264 100644
--- a/src/link/MachO/Atom.zig
+++ b/src/link/MachO/Atom.zig
@@ -42,7 +42,6 @@ extra: u32 = 0,
pub fn getName(self: Atom, macho_file: *MachO) [:0]const u8 {
return switch (self.getFile(macho_file)) {
.dylib => unreachable,
- .zig_object => |x| x.strtab.buffer.items[self.name.pos..][0 .. self.name.len - 1 :0],
inline else => |x| x.getString(self.name),
};
}
diff --git a/src/link/MachO/Symbol.zig b/src/link/MachO/Symbol.zig
index 80a9ddbce2..6e5af75fc2 100644
--- a/src/link/MachO/Symbol.zig
+++ b/src/link/MachO/Symbol.zig
@@ -57,7 +57,6 @@ pub fn weakRef(symbol: Symbol, macho_file: *MachO) bool {
pub fn getName(symbol: Symbol, macho_file: *MachO) [:0]const u8 {
return switch (symbol.getFile(macho_file).?) {
- .zig_object => |x| x.strtab.buffer.items[symbol.name.pos..][0 .. symbol.name.len - 1 :0],
inline else => |x| x.getString(symbol.name),
};
}
diff --git a/src/link/MachO/ZigObject.zig b/src/link/MachO/ZigObject.zig
index 6a119a838f..4e939008a5 100644
--- a/src/link/MachO/ZigObject.zig
+++ b/src/link/MachO/ZigObject.zig
@@ -1767,6 +1767,11 @@ fn addString(self: *ZigObject, allocator: Allocator, string: []const u8) !MachO.
return .{ .pos = off, .len = @intCast(string.len + 1) };
}
+pub fn getString(self: ZigObject, string: MachO.String) [:0]const u8 {
+ if (string.len == 0) return "";
+ return self.strtab.buffer.items[string.pos..][0 .. string.len - 1 :0];
+}
+
pub fn asFile(self: *ZigObject) File {
return .{ .zig_object = self };
}