From 6f08e172299320a3b243998878b38b0b3f43d8d5 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Fri, 16 Feb 2024 03:13:25 +0100 Subject: InternPool: make more use of `NullTerminatedString.Slice` This should avoid the random pointer invalidation crashes. Closes #18954 --- src/codegen.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/codegen.zig') 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); -- cgit v1.2.3