[Scummvm-cvs-logs] CVS: scummvm/simon simon.cpp,1.247,1.248

Max Horn fingolfin at users.sourceforge.net
Sat Jun 21 08:54:02 CEST 2003


Update of /cvsroot/scummvm/scummvm/simon
In directory sc8-pr-cvs1:/tmp/cvs-serv25727

Modified Files:
	simon.cpp 
Log Message:
delete _sound when SimonState is destroyed; fix leak & enian bug in playSting (but somebody please test that, I don't have simon1dos)

Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.247
retrieving revision 1.248
diff -u -d -r1.247 -r1.248
--- simon.cpp	21 Jun 2003 15:42:20 -0000	1.247
+++ simon.cpp	21 Jun 2003 15:53:27 -0000	1.248
@@ -458,6 +458,8 @@
 	delete _dummy_item_3;
 	
 	delete [] _fcs_list;
+	
+	delete _sound;
 }
 
 void SimonEngine::errorString(const char *buf1, char *buf2) {
@@ -1082,10 +1084,9 @@
 		return;
 
 	char filename[11];
-	uint16 size;
 
 	File mus_file;
-	uint16 *mus_offsets;
+	uint16 mus_offset;
 
 	sprintf(filename, "STINGS%i.MUS", _midi_sfx);
 	mus_file.open(filename, _gameDataPath);
@@ -1094,16 +1095,16 @@
 		return;
 	}
 
-	size = mus_file.readUint16LE();
-	mus_offsets = (uint16 *)malloc(size);
+	//uint16 size = mus_file.readUint16LE();
 
-	mus_file.seek(0, SEEK_SET);
-	if (mus_file.read(mus_offsets, size) != size)
-		error("Can't read offsets");
+	mus_file.seek(a * 2, SEEK_SET);
+	mus_offset = mus_file.readUint16LE();
+	if (mus_file.ioFailed())
+		error("Can't read sting %d offset", a);
 
-	mus_file.seek(mus_offsets[a], SEEK_SET);
-	midi.loadSMF (&mus_file, a, true);
-	midi.startTrack (0);
+	mus_file.seek(mus_offset, SEEK_SET);
+	midi.loadSMF(&mus_file, a, true);
+	midi.startTrack(0);
 }
 
 Subroutine *SimonEngine::getSubroutineByID(uint subroutine_id) {





More information about the Scummvm-git-logs mailing list