aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2
diff options
context:
space:
mode:
authoruruk2014-07-07 23:58:06 +0200
committeruruk2014-07-07 23:58:06 +0200
commitbe5ec466b3028f15a8aa51331426b3cd317fe789 (patch)
tree87650ef811c6ebb35fedb085ca248759ee802c15 /engines/cge2
parent10a37ea478050c37d368f31815fb189f4c7af7b1 (diff)
downloadscummvm-rg350-be5ec466b3028f15a8aa51331426b3cd317fe789.tar.gz
scummvm-rg350-be5ec466b3028f15a8aa51331426b3cd317fe789.tar.bz2
scummvm-rg350-be5ec466b3028f15a8aa51331426b3cd317fe789.zip
CGE2: Fix another probable memory-leak source.
Diffstat (limited to 'engines/cge2')
-rw-r--r--engines/cge2/hero.cpp13
-rw-r--r--engines/cge2/hero.h2
2 files changed, 14 insertions, 1 deletions
diff --git a/engines/cge2/hero.cpp b/engines/cge2/hero.cpp
index 393aa4b87c..f9c9996604 100644
--- a/engines/cge2/hero.cpp
+++ b/engines/cge2/hero.cpp
@@ -34,6 +34,10 @@ namespace CGE2 {
Hero::Hero(CGE2Engine *vm)
: Sprite(vm), _contact(nullptr), _dir(kNoDir),
_curDim(0), _tracePtr(-1), _ignoreMap(false) {
+
+ for (int i = 0; i < kDimMax; i++) {
+ _dim[i] = nullptr;
+ }
}
Sprite *Hero::expand() { // It's very similar to Sprite's expand, but doesn't bother with "labels" for example. TODO: Try to unify the two later!
@@ -210,6 +214,15 @@ Sprite *Hero::expand() { // It's very similar to Sprite's expand, but doesn't bo
return this;
}
+Sprite *Hero::contract() {
+ for (int i = 0; i < kDimMax; i++) {
+ if (_dim[i] != nullptr)
+ delete[] _dim[i];
+ }
+
+ return this;
+}
+
void Hero::setCurrent() {
FXP m = _vm->_eye->_z / (_pos3D._z - _vm->_eye->_z);
FXP tmp = m * _siz.y;
diff --git a/engines/cge2/hero.h b/engines/cge2/hero.h
index 41eb3ac020..c277b4a780 100644
--- a/engines/cge2/hero.h
+++ b/engines/cge2/hero.h
@@ -77,7 +77,7 @@ public:
Hero(CGE2Engine *vm);
void tick();
Sprite *expand();
- Sprite *contract() { return this; }
+ Sprite *contract();
Sprite *setContact();
int stepSize() { return _ext->_seq[7]._dx; }
int distance(V3D pos);