From fb43dc3097d4c4c8b595ea3baab7955d8713bfbd Mon Sep 17 00:00:00 2001 From: Zack Middleton 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 9ce1c85b17..2facaaebdc 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 @@ done: 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); }