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);
}