From 65b16bf0670b555c957a28219879d81ec7063f04 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Wed, 27 Sep 2023 13:06:18 -0400
Subject: [PATCH] WinSock recvfrom needs a `char *` buffer, not `void *`.
---
src/SDL_net.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/SDL_net.c b/src/SDL_net.c
index e0ce2ed..dae1947 100644
--- a/src/SDL_net.c
+++ b/src/SDL_net.c
@@ -1422,7 +1422,8 @@ int SDLNet_ReceiveDatagram(SDLNet_DatagramSocket *sock, SDLNet_Datagram **dgram)
AddressStorage from;
SockLen fromlen = sizeof (from);
- const int br = recvfrom(sock->handle, sock->recv_buffer, sizeof (sock->recv_buffer), 0, (struct sockaddr *) &from, &fromlen);
+ // WinSock's recvfrom wants a `char *` buffer instead of `void *`. The cast here is harmless on BSD Sockets.
+ const int br = recvfrom(sock->handle, (char *) sock->recv_buffer, sizeof (sock->recv_buffer), 0, (struct sockaddr *) &from, &fromlen);
if (br == SOCKET_ERROR) {
const int err = LastSocketError();
return WouldBlock(err) ? 0 : SetSocketError("Failed to receive datagrams", err);