diff options
| author | Casey Banner <kcbanner@gmail.com> | 2023-04-22 13:12:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-22 17:12:35 +0000 |
| commit | c7067ef6e823a0eaa87880e7a4b8bc89c0b31ab2 (patch) | |
| tree | 33265b9a246e48d1e90667abfc379abd9e8a861b /src/Sema.zig | |
| parent | 7e9a76048213a21bd3d20cc4acfd2ffe9b4b06b7 (diff) | |
| download | zig-c7067ef6e823a0eaa87880e7a4b8bc89c0b31ab2.tar.gz zig-c7067ef6e823a0eaa87880e7a4b8bc89c0b31ab2.zip | |
sema: fix memory corruption caused by resolveStructLayout
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index b8afce2cdd..95aa667950 100644 --- 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; |
