aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
authorAndrew Kurushin2006-03-02 18:25:56 +0000
committerAndrew Kurushin2006-03-02 18:25:56 +0000
commit55898dfe61b6480a615803f3d432d105af874bfc (patch)
treebd628b6312938e49fac7bd3fec3e8902e5aa2c0d /engines/saga
parent491cbcec5b88e7cb9fb9da901ee64a7b3cec73fd (diff)
downloadscummvm-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.cpp6
-rw-r--r--engines/saga/music.h4
-rw-r--r--engines/saga/rscfile.cpp2
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