From 3add9d8257d9414421acf91823917d9d49b28c6f Mon Sep 17 00:00:00 2001 From: dweiller <4678790+dweiller@users.noreplay.github.com> Date: Tue, 16 May 2023 00:18:30 +1000 Subject: [PATCH] std.c: fix return type of recv/recvfrom on windows Windows defines `recv` and `recvfrom` to return a value of type `int`, rather than a pointer-sized signed integer, and so should use `c_int` rather than `isize` for their return types. --- lib/std/c.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index a0b65c31c8..7cc4adf815 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -213,7 +213,12 @@ pub extern "c" fn sendto( ) isize; pub extern "c" fn sendmsg(sockfd: c.fd_t, msg: *const c.msghdr_const, flags: u32) isize; -pub extern "c" fn recv(sockfd: c.fd_t, arg1: ?*anyopaque, arg2: usize, arg3: c_int) isize; +pub extern "c" fn recv( + sockfd: c.fd_t, + arg1: ?*anyopaque, + arg2: usize, + arg3: c_int, +) if (builtin.os.tag == .windows) c_int else isize; pub extern "c" fn recvfrom( sockfd: c.fd_t, noalias buf: *anyopaque, @@ -221,7 +226,7 @@ pub extern "c" fn recvfrom( flags: u32, noalias src_addr: ?*c.sockaddr, noalias addrlen: ?*c.socklen_t, -) isize; +) if (builtin.os.tag == .windows) c_int else isize; pub extern "c" fn recvmsg(sockfd: c.fd_t, msg: *c.msghdr, flags: u32) isize; pub extern "c" fn kill(pid: c.pid_t, sig: c_int) c_int;