diff options
author | Johannes Schickel | 2009-10-31 18:32:17 +0000 |
---|---|---|
committer | Johannes Schickel | 2009-10-31 18:32:17 +0000 |
commit | 93d26113fd4ddccbf9cfa09bc0e24ccbb1d7325c (patch) | |
tree | b7da3e1eb625bcbc743d523d008c43487dfb0c36 | |
parent | 58299f4bfdf6ec10c37702c94e7cdd4462c595cf (diff) | |
download | scummvm-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
-rw-r--r-- | engines/kyra/seqplayer.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/sprites.cpp | 9 |
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; |