diff options
author | uruk | 2014-07-07 23:58:06 +0200 |
---|---|---|
committer | uruk | 2014-07-07 23:58:06 +0200 |
commit | be5ec466b3028f15a8aa51331426b3cd317fe789 (patch) | |
tree | 87650ef811c6ebb35fedb085ca248759ee802c15 /engines/cge2 | |
parent | 10a37ea478050c37d368f31815fb189f4c7af7b1 (diff) | |
download | scummvm-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.cpp | 13 | ||||
-rw-r--r-- | engines/cge2/hero.h | 2 |
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); |