commit c7067ef6e823a0eaa87880e7a4b8bc89c0b31ab2 (tree)
parent 7e9a76048213a21bd3d20cc4acfd2ffe9b4b06b7
Author: Casey Banner <kcbanner@gmail.com>
Date: Sat, 22 Apr 2023 13:12:35 -0400
sema: fix memory corruption caused by resolveStructLayout
Diffstat:
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/Sema.zig b/src/Sema.zig
@@ -30369,7 +30369,9 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void {
}
if (struct_obj.layout == .Auto and sema.mod.backendSupportsFeature(.field_reordering)) {
- const optimized_order = blk: {
+ const optimized_order = if (struct_obj.owner_decl == sema.owner_decl_index)
+ try sema.perm_arena.alloc(u32, struct_obj.fields.count())
+ else blk: {
const decl = sema.mod.declPtr(struct_obj.owner_decl);
var decl_arena = decl.value_arena.?.promote(sema.mod.gpa);
defer decl.value_arena.?.* = decl_arena.state;
diff --git a/src/link/Plan9.zig b/src/link/Plan9.zig
@@ -1060,7 +1060,7 @@ pub fn getDeclVAddr(
.offset = reloc_info.offset,
.addend = reloc_info.addend,
});
- return undefined;
+ return 0;
}
pub fn getDeclBlock(self: *const Plan9, index: DeclBlock.Index) DeclBlock {