From 9a4e171ca960629cdd5674401368c99c63e7990c Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Mon, 25 Sep 2023 23:36:50 -0400
Subject: [PATCH] Better error message setting for SDLNet_GetAddressString.
---
SDL_net.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/SDL_net.c b/SDL_net.c
index 44b5e3d..ca7b3eb 100644
--- a/SDL_net.c
+++ b/SDL_net.c
@@ -523,7 +523,19 @@ int SDLNet_GetAddressStatus(SDLNet_Address *addr)
const char *SDLNet_GetAddressString(SDLNet_Address *addr)
{
- return addr ? (const char *) SDL_AtomicGetPtr((void **) &addr->human_readable) : NULL;
+ if (!addr) {
+ SDL_InvalidParamError("address");
+ return NULL;
+ }
+
+ const char *retval = (const char *) SDL_AtomicGetPtr((void **) &addr->human_readable);
+ if (!retval) {
+ const int rc = SDLNet_GetAddressStatus(addr);
+ if (rc != -1) { // if -1, it'll set the error message.
+ SDL_SetError("Address not yet resolved"); // if this resolved in a race condition, too bad, try again.
+ }
+ }
+ return retval;
}
int SDLNet_CompareAddresses(const SDLNet_Address *sdlneta, const SDLNet_Address *sdlnetb)