diff options
author | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2006-02-26 18:47:39 +0000 |
---|---|---|
committer | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2006-02-26 18:47:39 +0000 |
commit | f8bc3409cbd9a36f756086259f964be795b59b4c (patch) | |
tree | 2b9c8150cab178fcc8c13ce3a36129d4b8cdcd84 | |
parent | 3cbb3f928dda70718ed5f4158f4b2254078301d8 (diff) | |
download | ioquake3-aero-f8bc3409cbd9a36f756086259f964be795b59b4c.tar.gz ioquake3-aero-f8bc3409cbd9a36f756086259f964be795b59b4c.zip |
* Sound related bug fixes from Thilo Schulz
git-svn-id: svn://svn.icculus.org/quake3/trunk@587 edf5b092-35ff-0310-97b2-ce42778d08ea
-rw-r--r-- | code/client/snd_codec_ogg.c | 5 | ||||
-rw-r--r-- | code/client/snd_openal.c | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/code/client/snd_codec_ogg.c b/code/client/snd_codec_ogg.c index 464d8d3..9c17c0b 100644 --- a/code/client/snd_codec_ogg.c +++ b/code/client/snd_codec_ogg.c @@ -412,7 +412,7 @@ where we read the whole stream at once. void *S_OGG_CodecLoad(const char *filename, snd_info_t *info) { snd_stream_t *stream; - unsigned char *buffer; + byte *buffer; int bytesRead; // check if input is valid @@ -452,8 +452,9 @@ void *S_OGG_CodecLoad(const char *filename, snd_info_t *info) // we don't even have read a single byte if(bytesRead <= 0) { + Z_Free(buffer); S_OGG_CodecCloseStream(stream); - + return NULL; } diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index 4fbb2ec..01b7fa2 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -1377,7 +1377,23 @@ void S_AL_StartBackgroundTrack( const char *intro, const char *loop ) // Queue the musicBuffers up for(i = 0; i < NUM_MUSIC_BUFFERS; i++) + { S_AL_MusicProcess(musicBuffers[i]); + + // check whether our stream still exists. + if(!mus_stream) + { + // there was an error in reading which resulted in a + // closed stream. We must bail out or we'll crash. + + // deallocate everything we allocated so far: + qalDeleteBuffers(NUM_MUSIC_BUFFERS, musicBuffers); + S_AL_MusicSourceFree(); + + return; + } + } + qalSourceQueueBuffers(musicSource, NUM_MUSIC_BUFFERS, musicBuffers); // Set the initial gain property |