aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2009-10-31 18:32:17 +0000
committerJohannes Schickel2009-10-31 18:32:17 +0000
commit93d26113fd4ddccbf9cfa09bc0e24ccbb1d7325c (patch)
treeb7da3e1eb625bcbc743d523d008c43487dfb0c36 /engines
parent58299f4bfdf6ec10c37702c94e7cdd4462c595cf (diff)
downloadscummvm-rg350-93d26113fd4ddccbf9cfa09bc0e24ccbb1d7325c.tar.gz
scummvm-rg350-93d26113fd4ddccbf9cfa09bc0e24ccbb1d7325c.tar.bz2
scummvm-rg350-93d26113fd4ddccbf9cfa09bc0e24ccbb1d7325c.zip
Fix some memory leaks in Kyrandia 1 (this hopefully fixes crashes on NDS after a long playtime).
svn-id: r45572
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/seqplayer.cpp5
-rw-r--r--engines/kyra/sprites.cpp9
2 files changed, 10 insertions, 4 deletions
diff --git a/engines/kyra/seqplayer.cpp b/engines/kyra/seqplayer.cpp
index 4837fb03dd..7080d27dc2 100644
--- a/engines/kyra/seqplayer.cpp
+++ b/engines/kyra/seqplayer.cpp
@@ -655,6 +655,11 @@ bool SeqPlayer::playSequence(const uint8 *seqData, bool skipSeq) {
}
delete[] _specialBuffer;
_specialBuffer = 0;
+
+ for (uint i = 0; i < ARRAYSIZE(_seqMovies); ++i) {
+ delete _seqMovies[i].movie;
+ _seqMovies[i].movie = 0;
+ }
return seqSkippedFlag;
}
diff --git a/engines/kyra/sprites.cpp b/engines/kyra/sprites.cpp
index 11a47f1527..4fa12fd687 100644
--- a/engines/kyra/sprites.cpp
+++ b/engines/kyra/sprites.cpp
@@ -65,10 +65,8 @@ void Sprites::setupSceneAnims() {
uint8 *data;
for (int i = 0; i < MAX_NUM_ANIMS; i++) {
- if (_anims[i].background) {
- delete[] _anims[i].background;
- _anims[i].background = 0;
- }
+ delete[] _anims[i].background;
+ _anims[i].background = 0;
if (_anims[i].script != 0) {
data = _anims[i].script;
@@ -407,6 +405,9 @@ void Sprites::loadDat(const char *filename, SceneExits &exits) {
_res->exists(filename, true);
_dat = _res->fileData(filename, &fileSize);
+ for (uint i = 0; i < MAX_NUM_ANIMS; ++i)
+ delete[] _anims[i].background;
+
memset(_anims, 0, sizeof(_anims));
uint8 nextAnim = 0;