[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