[Scummvm-cvs-logs] SF.net SVN: scummvm:[55094] scummvm/trunk/engines/mohawk

fuzzie at users.sourceforge.net fuzzie at users.sourceforge.net
Sun Jan 2 15:57:20 CET 2011


Revision: 55094
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55094&view=rev
Author:   fuzzie
Date:     2011-01-02 14:57:20 +0000 (Sun, 02 Jan 2011)

Log Message:
-----------
MOHAWK: Don't leak the MIDI data.

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/sound.cpp
    scummvm/trunk/engines/mohawk/sound.h

Modified: scummvm/trunk/engines/mohawk/sound.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/sound.cpp	2011-01-02 14:23:18 UTC (rev 55093)
+++ scummvm/trunk/engines/mohawk/sound.cpp	2011-01-02 14:57:20 UTC (rev 55094)
@@ -38,6 +38,7 @@
 Sound::Sound(MohawkEngine* vm) : _vm(vm) {
 	_midiDriver = NULL;
 	_midiParser = NULL;
+	_midiData = NULL;
 	initMidi();
 }
 
@@ -54,6 +55,9 @@
 		_midiDriver->close();
 		delete _midiDriver;
 	}
+
+	if (_midiData)
+		delete[] _midiData;
 }
 
 void Sound::initMidi() {
@@ -160,6 +164,9 @@
 	assert(_midiDriver && _midiParser);
 
 	_midiParser->unloadMusic();
+	if (_midiData)
+		delete[] _midiData;
+
 	Common::SeekableReadStream *midi = _vm->getResource(ID_TMID, id);
 
 	idTag = midi->readUint32BE();
@@ -168,10 +175,10 @@
 	idTag = midi->readUint32BE();
 	assert(idTag == ID_MIDI);
 
-	byte *midiData = (byte *)malloc(midi->size() - 12); // Enough to cover MThd/Prg#/MTrk
+	_midiData = new byte[midi->size() - 12]; // Enough to cover MThd/Prg#/MTrk
 
 	// Read the MThd Data
-	midi->read(midiData, 14);
+	midi->read(_midiData, 14);
 
 	// TODO: Load patches from the Prg# section... skip it for now.
 	idTag = midi->readUint32BE();
@@ -180,12 +187,12 @@
 
 	// Read the MTrk Data
 	uint32 mtrkSize = midi->size() - midi->pos();
-	midi->read(midiData + 14, mtrkSize);
+	midi->read(_midiData + 14, mtrkSize);
 
 	delete midi;
 
 	// Now, play it :)
-	if (!_midiParser->loadMusic(midiData, 14 + mtrkSize))
+	if (!_midiParser->loadMusic(_midiData, 14 + mtrkSize))
 		error ("Could not play MIDI music from tMID %04x\n", id);
 
 	_midiDriver->setTimerCallback(_midiParser, MidiParser::timerCallback);

Modified: scummvm/trunk/engines/mohawk/sound.h
===================================================================
--- scummvm/trunk/engines/mohawk/sound.h	2011-01-02 14:23:18 UTC (rev 55093)
+++ scummvm/trunk/engines/mohawk/sound.h	2011-01-02 14:57:20 UTC (rev 55094)
@@ -149,6 +149,7 @@
 	MohawkEngine *_vm;
 	MidiDriver *_midiDriver;
 	MidiParser *_midiParser;
+	byte *_midiData;
 
 	static Audio::AudioStream *makeMohawkWaveStream(Common::SeekableReadStream *stream);
 	static Audio::AudioStream *makeOldMohawkWaveStream(Common::SeekableReadStream *stream);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list