aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-07-18 01:11:13 +0530
committerEugene Sandulenko2019-09-03 17:17:22 +0200
commitadb43a79b7ee01cda7c33f48d778fc9b57358716 (patch)
treebe266186ab1fd69f00e22bd3e2408af5935a95b7
parent7709b2828b0148ed6662da891c493d73d95c25de (diff)
downloadscummvm-rg350-adb43a79b7ee01cda7c33f48d778fc9b57358716.tar.gz
scummvm-rg350-adb43a79b7ee01cda7c33f48d778fc9b57358716.tar.bz2
scummvm-rg350-adb43a79b7ee01cda7c33f48d778fc9b57358716.zip
HDB: Fix memory leaks in AI lists
-rw-r--r--engines/hdb/ai-init.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp
index 4753047757..5a71b4bb17 100644
--- a/engines/hdb/ai-init.cpp
+++ b/engines/hdb/ai-init.cpp
@@ -915,10 +915,25 @@ AI::AI() {
}
AI::~AI() {
+ for (uint i = 0; i < _ents->size(); i++) {
+ delete _ents->operator[](i);
+ }
delete _ents;
+ for (uint i = 0; i < _floats->size(); i++) {
+ delete _floats->operator[](i);
+ }
delete _floats;
+ for (uint i = 0; i < _arrowPaths->size(); i++) {
+ delete _arrowPaths->operator[](i);
+ }
delete _arrowPaths;
+ for (uint i = 0; i < _triggerList->size(); i++) {
+ delete _triggerList->operator[](i);
+ }
delete _triggerList;
+ for (uint i = 0; i < _hereList->size(); i++) {
+ delete _hereList->operator[](i);
+ }
delete _hereList;
memset(&_inventory, 0, sizeof(InvEnt) * kMaxInventory);
@@ -930,6 +945,12 @@ AI::~AI() {
memset(_clubLeftGfx, 0, sizeof(_clubLeftGfx));
memset(_clubRightGfx, 0, sizeof(_clubRightGfx));
memset(_slugAttackGfx, 0, sizeof(_slugAttackGfx));
+
+ // Free AnimTargets
+
+ for (uint i = 0; i < _animTargets.size(); i++) {
+ delete _animTargets[i];
+ }
}
bool AI::init() {