authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-01-02 12:34:56+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-01-03 15:45:11+00:00
logf7f0b9d28f2d68f40fcfe79f85b4cc37ea9ba2e8
tree113274859b8a252c1f638f715a6c5523fd31d081
parent3bb2f7b84ed8b1ee09b6077f66e28ab7291a7bd4
signaturelock-open Commit is signed but in an unrecognized format.

std.http.test: fix memory leaks on OOM


1 files changed, 16 insertions(+), 3 deletions(-)

lib/std/http/test.zig+16-3
......@@ -1139,13 +1139,26 @@ fn createTestServer(io: Io, S: type) !*TestServer {
11391139 }
11401140
11411141 const address = try net.IpAddress.parse("127.0.0.1", 0);
1142 const test_server = try std.testing.allocator.create(TestServer);
1142
1143 const gpa = std.testing.allocator;
1144
1145 const test_server = try gpa.create(TestServer);
1146 errdefer gpa.destroy(test_server);
1147
1148 var net_server = try address.listen(io, .{ .reuse_address = true });
1149 errdefer net_server.deinit(io);
1150
1151 // populate `test_server` first so `S.run` can use it
11431152 test_server.* = .{
11441153 .io = io,
1145 .net_server = try address.listen(io, .{ .reuse_address = true }),
1154 .net_server = net_server,
11461155 .shutting_down = false,
1147 .server_thread = try std.Thread.spawn(.{}, S.run, .{test_server}),
1156 .server_thread = undefined, // set below
11481157 };
1158
1159 test_server.server_thread = try .spawn(.{}, S.run, .{test_server});
1160 errdefer comptime unreachable;
1161
11491162 return test_server;
11501163}
11511164