authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-04-27 13:21:20+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-04-28 18:35:01+02:00
log81e90c7acbc90b06a9810b5bfe5812d06a537898
treeaf2d44f4d22c89ac1d53ac0f747d9ff8e3defabf
parentc1a98cd65d48693c9cfce5fbc5e5f5a1dbf4c1b7

test: fix pointer invalidation bug in the harness


1 files changed, 7 insertions(+), 6 deletions(-)

src/test.zig+7-6
...@@ -1010,7 +1010,7 @@ pub const TestContext = struct {...@@ -1010,7 +1010,7 @@ pub const TestContext = struct {
1010 /// that if any errors occur the caller knows it happened during this file.1010 /// that if any errors occur the caller knows it happened during this file.
1011 current_file: *[]const u8,1011 current_file: *[]const u8,
1012 ) !void {1012 ) !void {
1013 var cases = std.ArrayList(*Case).init(ctx.arena);1013 var cases = std.ArrayList(usize).init(ctx.arena);
10141014
1015 var it = dir.iterate();1015 var it = dir.iterate();
1016 var filenames = std.ArrayList([]const u8).init(ctx.arena);1016 var filenames = std.ArrayList([]const u8).init(ctx.arena);
...@@ -1081,8 +1081,8 @@ pub const TestContext = struct {...@@ -1081,8 +1081,8 @@ pub const TestContext = struct {
1081 name_prefix,1081 name_prefix,
1082 try target.zigTriple(ctx.arena),1082 try target.zigTriple(ctx.arena),
1083 });1083 });
1084 const case = try ctx.cases.addOne();1084 const next = ctx.cases.items.len;
1085 case.* = .{1085 try ctx.cases.append(.{
1086 .name = name,1086 .name = name,
1087 .target = target,1087 .target = target,
1088 .backend = backend,1088 .backend = backend,
...@@ -1090,13 +1090,14 @@ pub const TestContext = struct {...@@ -1090,13 +1090,14 @@ pub const TestContext = struct {
1090 .is_test = is_test,1090 .is_test = is_test,
1091 .output_mode = output_mode,1091 .output_mode = output_mode,
1092 .files = std.ArrayList(TestContext.File).init(ctx.cases.allocator),1092 .files = std.ArrayList(TestContext.File).init(ctx.cases.allocator),
1093 };1093 });
1094 try cases.append(case);1094 try cases.append(next);
1095 }1095 }
1096 }1096 }
1097 }1097 }
10981098
1099 for (cases.items) |case| {1099 for (cases.items) |case_index| {
1100 const case = &ctx.cases.items[case_index];
1100 switch (manifest.@"type") {1101 switch (manifest.@"type") {
1101 .@"error" => {1102 .@"error" => {
1102 const errors = try manifest.trailingAlloc(ctx.arena);1103 const errors = try manifest.trailingAlloc(ctx.arena);