SDL_net: Better error message setting for SDLNet_GetAddressString.

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)