aboutsummaryrefslogtreecommitdiff
path: root/scumm/sound.cpp
diff options
context:
space:
mode:
authorTravis Howell2005-05-13 08:45:42 +0000
committerTravis Howell2005-05-13 08:45:42 +0000
commit739e0640adc9ed9fd0ab2bfaaefc1d6913994278 (patch)
tree84ed2f6f5c8d45b4f262c3f95d91baad666fa00d /scumm/sound.cpp
parentd987a5852962a31816c92487debf00f7bf6b3496 (diff)
downloadscummvm-rg350-739e0640adc9ed9fd0ab2bfaaefc1d6913994278.tar.gz
scummvm-rg350-739e0640adc9ed9fd0ab2bfaaefc1d6913994278.tar.bz2
scummvm-rg350-739e0640adc9ed9fd0ab2bfaaefc1d6913994278.zip
HE demos sometimes call music tracks that don't exist.
svn-id: r18080
Diffstat (limited to 'scumm/sound.cpp')
-rw-r--r--scumm/sound.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 1c94cbe2ce..d6059aecc6 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -202,18 +202,18 @@ void Sound::setupHEMusicFile() {
musicFile.close();
}
-void Sound::getHEMusicDetails(int id, int &musicOffs, int &musicSize) {
+bool Sound::getHEMusicDetails(int id, int &musicOffs, int &musicSize) {
int i;
for (i = 0; i < _heMusicTracks; i++) {
if (_heMusic[i].id == id) {
musicOffs = _heMusic[i].offset;
musicSize = _heMusic[i].size;
- return;
+ return 1;
}
}
- error("getHEMusicDetails: musicID %d not found", id);
+ return 0;
}
void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
@@ -250,8 +250,11 @@ void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
warning("playSound: Can't open music file %s", buf);
return;
}
+ if (!getHEMusicDetails(soundID, music_offs, size)) {
+ debug(0, "playSound: musicID %d not found", soundID);
+ return;
+ }
- getHEMusicDetails(soundID, music_offs, size);
musicFile.seek(music_offs, SEEK_SET);
ptr = (byte *)malloc(size);
musicFile.read(ptr, size);