[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