From cb7608084714bc1a210a076203f949ca56149759 Mon Sep 17 00:00:00 2001 From: sezero Date: Thu, 19 Feb 2015 08:37:13 +0000 Subject: [PATCH] snd_flac.c, snd_mpg123.c: fix incorrect usage of decoder function return value in RewindStream procedures. bgmusic.c (BGM_UpdateStream): print msg if stream rewinding fails. git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1169 af15c1b1-3010-417e-b628-4374ebc0bcbd --- quakespasm/Quake/bgmusic.c | 10 ++++++---- quakespasm/Quake/snd_flac.c | 11 ++--------- quakespasm/Quake/snd_mpg123.c | 4 +++- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/quakespasm/Quake/bgmusic.c b/quakespasm/Quake/bgmusic.c index 40c196dd..5b0cbe0f 100644 --- a/quakespasm/Quake/bgmusic.c +++ b/quakespasm/Quake/bgmusic.c @@ -144,7 +144,7 @@ qboolean BGM_Init (void) switch (wanted_handlers[i].player) { case BGM_MIDIDRV: - /* not supported in quake */ + /* not supported in quake */ break; case BGM_STREAMER: wanted_handlers[i].is_available = @@ -203,7 +203,7 @@ static void BGM_Play_noext (const char *filename, unsigned int allowed_types) switch (handler->player) { case BGM_MIDIDRV: - /* not supported in quake */ + /* not supported in quake */ break; case BGM_STREAMER: bgmstream = S_CodecOpenStreamType(tmp, handler->type); @@ -261,7 +261,7 @@ void BGM_Play (const char *filename) switch (handler->player) { case BGM_MIDIDRV: - /* not supported in quake */ + /* not supported in quake */ break; case BGM_STREAMER: bgmstream = S_CodecOpenStreamType(tmp, handler->type); @@ -420,8 +420,10 @@ static void BGM_UpdateStream (void) { if (bgmloop) { - if (S_CodecRewindStream(bgmstream) < 0) + res = S_CodecRewindStream(bgmstream); + if (res != 0) { + Con_Printf("Stream seek error (%i), stopping.\n", res); BGM_Stop(); return; } diff --git a/quakespasm/Quake/snd_flac.c b/quakespasm/Quake/snd_flac.c index 8101c5e8..8ce1c1e6 100644 --- a/quakespasm/Quake/snd_flac.c +++ b/quakespasm/Quake/snd_flac.c @@ -146,16 +146,12 @@ flac_write_func (const FLAC__StreamDecoder *decoder, flacfile_t *ff = (flacfile_t *) client_data; if (!ff->buffer) { -#if 1 /*!defined(CODECS_USE_ZONE)*/ ff->buffer = (byte *) malloc (ff->info->blocksize * ff->info->channels * ff->info->width); if (!ff->buffer) { ff->error = -1; /* needn't set this here, but... */ Con_Printf("Insufficient memory for fLaC audio\n"); return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } -#else - ff->buffer = (byte *) Z_Malloc (ff->info->blocksize * ff->info->channels * ff->info->width); -#endif } if (ff->info->channels == 1) @@ -359,11 +355,7 @@ static void S_FLAC_CodecCloseStream (snd_stream_t *stream) FLAC__stream_decoder_delete (ff->decoder); if (ff->buffer) -#if 0 /*defined(CODECS_USE_ZONE)*/ - Z_Free(ff->buffer); -#else free(ff->buffer); -#endif Z_Free(ff); S_CodecUtilClose(&stream); @@ -374,7 +366,8 @@ static int S_FLAC_CodecRewindStream (snd_stream_t *stream) flacfile_t *ff = (flacfile_t *) stream->priv; ff->pos = ff->size = 0; - return FLAC__stream_decoder_seek_absolute (ff->decoder, 0); + if (FLAC__stream_decoder_seek_absolute(ff->decoder, 0)) return 0; + return -1; } snd_codec_t flac_codec = diff --git a/quakespasm/Quake/snd_mpg123.c b/quakespasm/Quake/snd_mpg123.c index 159e190b..7b866ca8 100644 --- a/quakespasm/Quake/snd_mpg123.c +++ b/quakespasm/Quake/snd_mpg123.c @@ -203,7 +203,9 @@ static void S_MP3_CodecCloseStream (snd_stream_t *stream) static int S_MP3_CodecRewindStream (snd_stream_t *stream) { mp3_priv_t *priv = (mp3_priv_t *) stream->priv; - return (int) mpg123_seek(priv->handle, 0, SEEK_SET); + off_t res = mpg123_seek(priv->handle, 0, SEEK_SET); + if (res >= 0) return (0); + return res; } snd_codec_t mp3_codec =