[Scummvm-cvs-logs] CVS: scummvm/scumm resource_v7he.cpp,1.41,1.42 sound.cpp,1.459,1.460 sound.h,1.88,1.89

kirben kirben at users.sourceforge.net
Fri May 13 01:48:05 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21114/scumm

Modified Files:
	resource_v7he.cpp sound.cpp sound.h 
Log Message:

HE demos sometimes call music tracks that don't exist.


Index: resource_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v7he.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- resource_v7he.cpp	10 May 2005 22:56:10 -0000	1.41
+++ resource_v7he.cpp	13 May 2005 08:45:39 -0000	1.42
@@ -1760,7 +1760,10 @@
 	int offs, size;
 
 	if (id > _numSounds) {
-		_sound->getHEMusicDetails(id, offs, size);
+		if (!_sound->getHEMusicDetails(id, offs, size)) {
+			debug(0, "getSoundResourceSize: musicID %d not found", id);
+			return 0;
+		}
 	} else {
 		ptr = getResourceAddress(rtSound, id);
 		if (!ptr)

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.459
retrieving revision 1.460
diff -u -d -r1.459 -r1.460
--- sound.cpp	11 May 2005 00:01:28 -0000	1.459
+++ sound.cpp	13 May 2005 08:45:40 -0000	1.460
@@ -202,18 +202,18 @@
 	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 @@
 			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);

Index: sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.h,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -d -r1.88 -r1.89
--- sound.h	11 May 2005 00:01:29 -0000	1.88
+++ sound.h	13 May 2005 08:45:42 -0000	1.89
@@ -133,7 +133,7 @@
 	int getCurrentCDSound() const { return _currentCDSound; }
 
 	void setupHEMusicFile();
-	void getHEMusicDetails(int id, int &musicOffs, int &musicSize);
+	bool getHEMusicDetails(int id, int &musicOffs, int &musicSize);
 
 	// Used by the save/load system:
 	const SaveLoadEntry *getSaveLoadEntries();





More information about the Scummvm-git-logs mailing list