[Scummvm-cvs-logs] SF.net SVN: scummvm:[41055] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Sun May 31 03:24:08 CEST 2009
Revision: 41055
http://scummvm.svn.sourceforge.net/scummvm/?rev=41055&view=rev
Author: athrxx
Date: 2009-05-31 01:24:08 +0000 (Sun, 31 May 2009)
Log Message:
-----------
LOL: - fix shape memory allocation/release issue
Modified Paths:
--------------
scummvm/trunk/engines/kyra/lol.cpp
scummvm/trunk/engines/kyra/sprites_lol.cpp
Modified: scummvm/trunk/engines/kyra/lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/lol.cpp 2009-05-31 01:11:06 UTC (rev 41054)
+++ scummvm/trunk/engines/kyra/lol.cpp 2009-05-31 01:24:08 UTC (rev 41055)
@@ -314,22 +314,13 @@
delete[] _healiShapes;
}
- if (_monsterShapes) {
- for (int i = 0; i < 48; i++)
- delete[] _monsterShapes[i];
- delete[] _monsterShapes;
- }
- if (_monsterPalettes) {
- for (int i = 0; i < 48; i++)
- delete[] _monsterPalettes[i];
- delete[] _monsterPalettes;
- }
- if (_monsterShapesEx) {
- for (int i = 0; i < 576; i++)
- delete[] _monsterShapesEx[i];
- delete[] _monsterShapesEx;
- }
+ for (int i = 0; i < 3; i++)
+ releaseMonsterShapes(i);
+ delete[] _monsterShapes;
+ delete[] _monsterPalettes;
+ delete[] _monsterShapesEx;
+
if (_automapShapes)
delete[] _automapShapes;
Modified: scummvm/trunk/engines/kyra/sprites_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sprites_lol.cpp 2009-05-31 01:11:06 UTC (rev 41054)
+++ scummvm/trunk/engines/kyra/sprites_lol.cpp 2009-05-31 01:24:08 UTC (rev 41055)
@@ -123,9 +123,14 @@
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 @@
_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) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list