aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sprites_lol.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-05-31 01:24:08 +0000
committerFlorian Kagerer2009-05-31 01:24:08 +0000
commitc938667d4b60005a926007376305f3da8621f7c7 (patch)
treea6c2bd7655a64319269e8be65d90c5c0aa2f13d7 /engines/kyra/sprites_lol.cpp
parentabe8cf06255f7398127912354dfbf84daceff569 (diff)
downloadscummvm-rg350-c938667d4b60005a926007376305f3da8621f7c7.tar.gz
scummvm-rg350-c938667d4b60005a926007376305f3da8621f7c7.tar.bz2
scummvm-rg350-c938667d4b60005a926007376305f3da8621f7c7.zip
LOL: - fix shape memory allocation/release issue
svn-id: r41055
Diffstat (limited to 'engines/kyra/sprites_lol.cpp')
-rw-r--r--engines/kyra/sprites_lol.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/kyra/sprites_lol.cpp b/engines/kyra/sprites_lol.cpp
index adc3fd09e7..a936c4340d 100644
--- a/engines/kyra/sprites_lol.cpp
+++ b/engines/kyra/sprites_lol.cpp
@@ -123,9 +123,14 @@ void LoLEngine::loadMonsterShapes(const char *file, int monsterIndex, int animTy
void LoLEngine::releaseMonsterShapes(int monsterIndex) {
for (int i = 0; i < 16; i++) {
int pos = (monsterIndex << 4) + i;
+ int pos2 = (monsterIndex << 4) + 16;
if (_monsterShapes[pos]) {
+ uint8 *t = _monsterShapes[pos];
delete[] _monsterShapes[pos];
- _monsterShapes[pos] = 0;
+ for (int ii = pos; ii < pos2; ii++) {
+ if (_monsterShapes[ii] == t)
+ _monsterShapes[ii] = 0;
+ }
}
if (_monsterPalettes[pos]) {
@@ -133,6 +138,14 @@ void LoLEngine::releaseMonsterShapes(int monsterIndex) {
_monsterPalettes[pos] = 0;
}
}
+
+ for (int i = 0; i < 192; i++) {
+ int pos = (monsterIndex * 192) + i;
+ if (_monsterShapesEx[pos]) {
+ delete[] _monsterShapesEx[pos];
+ _monsterShapesEx[pos] = 0;
+ }
+ }
}
int LoLEngine::deleteMonstersFromBlock(int block) {