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 {
10101010 /// that if any errors occur the caller knows it happened during this file.
10111011 current_file: *[]const u8,
10121012 ) !void {
1013 var cases = std.ArrayList(*Case).init(ctx.arena);
1013 var cases = std.ArrayList(usize).init(ctx.arena);
10141014
10151015 var it = dir.iterate();
10161016 var filenames = std.ArrayList([]const u8).init(ctx.arena);
......@@ -1081,8 +1081,8 @@ pub const TestContext = struct {
10811081 name_prefix,
10821082 try target.zigTriple(ctx.arena),
10831083 });
1084 const case = try ctx.cases.addOne();
1085 case.* = .{
1084 const next = ctx.cases.items.len;
1085 try ctx.cases.append(.{
10861086 .name = name,
10871087 .target = target,
10881088 .backend = backend,
......@@ -1090,13 +1090,14 @@ pub const TestContext = struct {
10901090 .is_test = is_test,
10911091 .output_mode = output_mode,
10921092 .files = std.ArrayList(TestContext.File).init(ctx.cases.allocator),
1093 };
1094 try cases.append(case);
1093 });
1094 try cases.append(next);
10951095 }
10961096 }
10971097 }
10981098
1099 for (cases.items) |case| {
1099 for (cases.items) |case_index| {
1100 const case = &ctx.cases.items[case_index];
11001101 switch (manifest.@"type") {
11011102 .@"error" => {
11021103 const errors = try manifest.trailingAlloc(ctx.arena);