zig

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

commit 966809862fb0dee03fbb79eb6b907bb801a5176b (tree)
parent fb914a9a1002ec178aa493e974dfb5a3e6aa4bdd
Author: Matthew Lugg <mlugg@mlugg.co.uk>
Date:   Mon, 10 Nov 2025 14:38:54 +0000

Merge pull request #25839 from Rexicon226/socket-bind-fix

Io.net: fix compile error in `receive` and `receiveTimeout`
Diffstat:
Mlib/std/Io/net.zig | 16++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/std/Io/net.zig b/lib/std/Io/net.zig @@ -1118,8 +1118,14 @@ pub const Socket = struct { /// See also: /// * `receiveTimeout` pub fn receive(s: *const Socket, io: Io, buffer: []u8) ReceiveError!IncomingMessage { - var message: IncomingMessage = undefined; - assert(1 == try io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, .none)); + var message: IncomingMessage = .init; + const maybe_err, const count = io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, .none); + if (maybe_err) |err| switch (err) { + // No timeout is passed to `netReceieve`, so it must not return timeout related errors. + error.Timeout, error.UnsupportedClock => unreachable, + else => |e| return e, + }; + assert(1 == count); return message; } @@ -1138,8 +1144,10 @@ pub const Socket = struct { buffer: []u8, timeout: Io.Timeout, ) ReceiveTimeoutError!IncomingMessage { - var message: IncomingMessage = undefined; - assert(1 == try io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, timeout)); + var message: IncomingMessage = .init; + const maybe_err, const count = io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, timeout); + if (maybe_err) |err| return err; + assert(1 == count); return message; }