diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-12-11 19:32:23 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-12-14 14:08:21 +0200 |
| commit | e6588857dfb7a4528e698604d31cc2a5e26c0fb8 (patch) | |
| tree | 63a080325da48dddd44156e375c11328327e9132 /src/Sema.zig | |
| parent | 41913ddb1a94591c305870ad2854ecff67ac3242 (diff) | |
| download | zig-e6588857dfb7a4528e698604d31cc2a5e26c0fb8.tar.gz zig-e6588857dfb7a4528e698604d31cc2a5e26c0fb8.zip | |
Sema: fix memory management of union enum tag int tag
This likely went unnoticed due to all power of two integer types being special cased.
Closes #13812
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index edfd1d36e3..74e40687f1 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -30757,16 +30757,17 @@ fn generateUnionTagTypeNumbered( new_decl.name_fully_qualified = true; errdefer mod.abortAnonDecl(new_decl_index); + const copied_int_ty = try int_ty.copy(new_decl_arena_allocator); enum_obj.* = .{ .owner_decl = new_decl_index, - .tag_ty = int_ty, + .tag_ty = copied_int_ty, .fields = .{}, .values = .{}, }; // Here we pre-allocate the maps using the decl arena. try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len); try enum_obj.values.ensureTotalCapacityContext(new_decl_arena_allocator, fields_len, .{ - .ty = int_ty, + .ty = copied_int_ty, .mod = mod, }); try new_decl.finalizeNewArena(&new_decl_arena); |
