diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-02-16 03:13:25 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-02-16 00:27:25 -0800 |
| commit | 6f08e172299320a3b243998878b38b0b3f43d8d5 (patch) | |
| tree | 22ca949d513aa57651081ce831875e322666eb2a /src/codegen.zig | |
| parent | 0183b44bb10751c46bd520e673726a66c027b477 (diff) | |
| download | zig-6f08e172299320a3b243998878b38b0b3f43d8d5.tar.gz zig-6f08e172299320a3b243998878b38b0b3f43d8d5.zip | |
InternPool: make more use of `NullTerminatedString.Slice`
This should avoid the random pointer invalidation crashes.
Closes #18954
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index f16bf301a8..118bab4be9 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -119,6 +119,7 @@ pub fn generateLazySymbol( const comp = bin_file.comp; const zcu = comp.module.?; + const ip = &zcu.intern_pool; const target = comp.root_mod.resolved_target.result; const endian = target.cpu.arch.endian(); const gpa = comp.gpa; @@ -151,8 +152,9 @@ pub fn generateLazySymbol( return Result.ok; } else if (lazy_sym.ty.zigTypeTag(zcu) == .Enum) { alignment.* = .@"1"; - for (lazy_sym.ty.enumFields(zcu)) |tag_name_ip| { - const tag_name = zcu.intern_pool.stringToSlice(tag_name_ip); + const tag_names = lazy_sym.ty.enumFields(zcu); + for (0..tag_names.len) |tag_index| { + const tag_name = zcu.intern_pool.stringToSlice(tag_names.get(ip)[tag_index]); try code.ensureUnusedCapacity(tag_name.len + 1); code.appendSliceAssumeCapacity(tag_name); code.appendAssumeCapacity(0); |
