diff --git a/src/codecs/music_ogg_stb.c b/src/codecs/music_ogg_stb.c index 16ab5d552..02441c6c7 100644 --- a/src/codecs/music_ogg_stb.c +++ b/src/codecs/music_ogg_stb.c @@ -198,6 +198,14 @@ static void *OGG_CreateFromRW(SDL_RWops *src, int freesrc) } rate = music->vi.sample_rate; + + music->full_length = stb_vorbis_stream_length_in_samples(music->vf); + if (music->full_length <= 0) { + Mix_SetError("No samples in ogg/vorbis stream."); + OGG_Delete(music); + return NULL; + } + vc = stb_vorbis_get_comment(music->vf); if (vc.comment_list != NULL) { for (i = 0; i < vc.comment_list_length; i++) { @@ -250,7 +258,6 @@ static void *OGG_CreateFromRW(SDL_RWops *src, int freesrc) } } - music->full_length = stb_vorbis_stream_length_in_samples(music->vf); if ((music->loop_end > 0) && (music->loop_end <= music->full_length) && (music->loop_start < music->loop_end)) { music->loop = 1;