[Scummvm-cvs-logs] CVS: scummvm/simon midi.cpp,1.30,1.31

Jamieson Christian jamieson630 at users.sourceforge.net
Tue May 20 09:51:05 CEST 2003


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

Modified Files:
	midi.cpp 
Log Message:
Fixed memory overrun problem

Index: midi.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/midi.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- midi.cpp	20 May 2003 16:42:25 -0000	1.30
+++ midi.cpp	20 May 2003 16:50:16 -0000	1.31
@@ -228,7 +228,10 @@
 void MidiPlayer::playSMF (File *in, int song) {
 	_system->lock_mutex (_mutex);
 	clearConstructs();
-	uint32 size = in->size() - in->pos();
+
+	// When computing the resource size, add
+	// 4 for our own End of Track on GMF resources.
+	uint32 size = in->size() - in->pos() + 4;
 	if (size > 64000)
 		size = 64000;
 	_data = (byte *) calloc (size, 1);
@@ -237,7 +240,7 @@
 	// For GMF files, we're going to have to use
 	// hardcoded size tables.
 	if (!memcmp (_data, "GMF\x1", 4) && size == 64000)
-		size = simon1_gmf_size [song];
+		size = simon1_gmf_size [song] + 4; // Again, +4 for End of Track
 
 	MidiParser *parser = MidiParser::createParser_SMF();
 	parser->property (MidiParser::mpMalformedPitchBends, 1);





More information about the Scummvm-git-logs mailing list