diff options
author | Andrew Kurushin | 2006-03-02 18:25:56 +0000 |
---|---|---|
committer | Andrew Kurushin | 2006-03-02 18:25:56 +0000 |
commit | 55898dfe61b6480a615803f3d432d105af874bfc (patch) | |
tree | bd628b6312938e49fac7bd3fec3e8902e5aa2c0d /engines/saga | |
parent | 491cbcec5b88e7cb9fb9da901ee64a7b3cec73fd (diff) | |
download | scummvm-rg350-55898dfe61b6480a615803f3d432d105af874bfc.tar.gz scummvm-rg350-55898dfe61b6480a615803f3d432d105af874bfc.tar.bz2 scummvm-rg350-55898dfe61b6480a615803f3d432d105af874bfc.zip |
apply CYX mem-leak fix patch
svn-id: r21013
Diffstat (limited to 'engines/saga')
-rw-r--r-- | engines/saga/music.cpp | 6 | ||||
-rw-r--r-- | engines/saga/music.h | 4 | ||||
-rw-r--r-- | engines/saga/rscfile.cpp | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index e352818ee6..921c1a9f1a 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -305,6 +305,8 @@ Music::Music(SagaEngine *vm, Audio::Mixer *mixer, MidiDriver *driver, int enable _songTable = 0; _track = NULL; + + _midiMusicData = NULL; } Music::~Music() { @@ -316,6 +318,7 @@ Music::~Music() { delete smfParser; free(_songTable); + free(_midiMusicData); } void Music::musicVolumeGaugeCallback(void *refCon) { @@ -432,7 +435,6 @@ void Music::play(uint32 resourceId, MusicFlags flags) { flags = MUSIC_NORMAL; } - // FIXME: Is resource_data ever freed? // Load MIDI/XMI resource data if (_vm->getGameType() == GType_ITE) { @@ -506,6 +508,8 @@ void Music::play(uint32 resourceId, MusicFlags flags) { _player->setLoop(false); _player->playMusic(); + free(_midiMusicData); + _midiMusicData = resourceData; } void Music::pause(void) { diff --git a/engines/saga/music.h b/engines/saga/music.h index 377a5bf1d8..a276896dac 100644 --- a/engines/saga/music.h +++ b/engines/saga/music.h @@ -92,7 +92,7 @@ protected: byte *_musicData; uint16 *_buf; - uint32 _musicDataSize; + size_t _musicDataSize; }; class Music { @@ -139,6 +139,8 @@ private: DigitalTrackInfo *_track; + byte *_midiMusicData; + static void musicVolumeGaugeCallback(void *refCon); void musicVolumeGauge(void); }; diff --git a/engines/saga/rscfile.cpp b/engines/saga/rscfile.cpp index 24d1262d56..8b2a5d7e7f 100644 --- a/engines/saga/rscfile.cpp +++ b/engines/saga/rscfile.cpp @@ -313,7 +313,7 @@ bool Resource::loadContext(ResourceContext *context) { subjectResourceData->offset = resourceData->offset; subjectResourceData->size = resourceData->size; } - + free(tableBuffer); } //process external patch files |