zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit f7f0b9d28f2d68f40fcfe79f85b4cc37ea9ba2e8 (tree)
parent 3bb2f7b84ed8b1ee09b6077f66e28ab7291a7bd4
Author: Matthew Lugg <mlugg@mlugg.co.uk>
Date:   Fri,  2 Jan 2026 12:34:56 +0000

std.http.test: fix memory leaks on OOM

Diffstat:
Mlib/std/http/test.zig | 19++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/lib/std/http/test.zig b/lib/std/http/test.zig @@ -1139,13 +1139,26 @@ fn createTestServer(io: Io, S: type) !*TestServer { } const address = try net.IpAddress.parse("127.0.0.1", 0); - const test_server = try std.testing.allocator.create(TestServer); + + const gpa = std.testing.allocator; + + const test_server = try gpa.create(TestServer); + errdefer gpa.destroy(test_server); + + var net_server = try address.listen(io, .{ .reuse_address = true }); + errdefer net_server.deinit(io); + + // populate `test_server` first so `S.run` can use it test_server.* = .{ .io = io, - .net_server = try address.listen(io, .{ .reuse_address = true }), + .net_server = net_server, .shutting_down = false, - .server_thread = try std.Thread.spawn(.{}, S.run, .{test_server}), + .server_thread = undefined, // set below }; + + test_server.server_thread = try .spawn(.{}, S.run, .{test_server}); + errdefer comptime unreachable; + return test_server; }