SDL: Set error for NULL SDL_IOStream in SDL_LoadWAV_IO()

From fb43dc3097d4c4c8b595ea3baab7955d8713bfbd Mon Sep 17 00:00:00 2001
From: Zack Middleton <[EMAIL REDACTED]>
Date: Mon, 14 Oct 2024 20:51:29 -0500
Subject: [PATCH] Set error for NULL SDL_IOStream in SDL_LoadWAV_IO()

---
 src/audio/SDL_wave.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c
index 9ce1c85b174b3..2facaaebdc90d 100644
--- a/src/audio/SDL_wave.c
+++ b/src/audio/SDL_wave.c
@@ -2093,7 +2093,8 @@ bool SDL_LoadWAV_IO(SDL_IOStream *src, bool closeio, SDL_AudioSpec *spec, Uint8
 
     // Make sure we are passed a valid data source
     if (!src) {
-        goto done;  // Error may come from SDL_IOStream.
+        SDL_InvalidParamError("src");
+        goto done;
     } else if (!spec) {
         SDL_InvalidParamError("spec");
         goto done;
@@ -2132,6 +2133,19 @@ bool SDL_LoadWAV_IO(SDL_IOStream *src, bool closeio, SDL_AudioSpec *spec, Uint8
 
 bool SDL_LoadWAV(const char *path, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)
 {
-    return SDL_LoadWAV_IO(SDL_IOFromFile(path, "rb"), 1, spec, audio_buf, audio_len);
+    SDL_IOStream *stream = SDL_IOFromFile(path, "rb");
+    if (!stream) {
+        if (spec) {
+            SDL_zerop(spec);
+        }
+        if (audio_buf) {
+            *audio_buf = NULL;
+        }
+        if (audio_len) {
+            *audio_len = 0;
+        }
+        return false;
+    }
+    return SDL_LoadWAV_IO(stream, true, spec, audio_buf, audio_len);
 }