aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Wickham <spexguy070@gmail.com>2021-09-30 21:42:34 -0500
committerMartin Wickham <spexguy070@gmail.com>2021-10-02 15:21:48 -0500
commit993dc2ae77514e61235f0920755fdb1ccc77c2f7 (patch)
tree3b1224ca2d9a37ff12deae8e8a1aca9feb34e1de
parent7ef59384500afa5b20bee474d570af55565dfa7f (diff)
downloadzig-993dc2ae77514e61235f0920755fdb1ccc77c2f7.tar.gz
zig-993dc2ae77514e61235f0920755fdb1ccc77c2f7.zip
Fix ownership of array type and elements
-rw-r--r--src/Sema.zig7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 995dc84303..7fb12bf27c 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -8244,10 +8244,13 @@ fn zirArrayInit(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index, is_ref:
var anon_decl = try block.startAnonDecl();
defer anon_decl.deinit();
assert(!(resolved_args.len == 0));
- const final_ty = try Type.Tag.array.create(anon_decl.arena(), .{ .len = resolved_args.len, .elem_type = sema.typeOf(resolved_args[0]) });
+ const final_ty = try Type.Tag.array.create(anon_decl.arena(), .{
+ .len = resolved_args.len,
+ .elem_type = try sema.typeOf(resolved_args[0]).copy(anon_decl.arena()),
+ });
const buf = try anon_decl.arena().alloc(Value, resolved_args.len);
for (resolved_args) |arg, i| {
- buf[i] = (try sema.resolveMaybeUndefVal(block, src, arg)).?;
+ buf[i] = try (try sema.resolveMaybeUndefVal(block, src, arg)).?.copy(anon_decl.arena());
}
const val = try Value.Tag.array.create(anon_decl.arena(), buf);