aboutsummaryrefslogtreecommitdiff
path: root/engines/hugo/hugo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hugo/hugo.cpp')
-rw-r--r--engines/hugo/hugo.cpp48
1 files changed, 30 insertions, 18 deletions
diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp
index 774abc0343..fab2e2d17d 100644
--- a/engines/hugo/hugo.cpp
+++ b/engines/hugo/hugo.cpp
@@ -86,13 +86,17 @@ HugoEngine::~HugoEngine() {
free(_textData);
free(_stringtData);
- for (int i = 0; _arrayNouns[i]; i++)
- free(_arrayNouns[i]);
- free(_arrayNouns);
+ if (_arrayNouns) {
+ for (int i = 0; _arrayNouns[i]; i++)
+ free(_arrayNouns[i]);
+ free(_arrayNouns);
+ }
- for (int i = 0; _arrayVerbs[i]; i++)
- free(_arrayVerbs[i]);
- free(_arrayVerbs);
+ if (_arrayVerbs) {
+ for (int i = 0; _arrayVerbs[i]; i++)
+ free(_arrayVerbs[i]);
+ free(_arrayVerbs);
+ }
free(_screenNames);
_screen->freePalette();
@@ -108,25 +112,33 @@ HugoEngine::~HugoEngine() {
free(_hotspots);
free(_invent);
- for (int i = 0; i < _usesSize; i++)
- free(_uses[i].targets);
- free(_uses);
+ if (_uses) {
+ for (int i = 0; i < _usesSize; i++)
+ free(_uses[i].targets);
+ free(_uses);
+ }
free(_catchallList);
- for (int i = 0; i < _backgroundObjectsSize; i++)
- free(_backgroundObjects[i]);
- free(_backgroundObjects);
+ if (_backgroundObjects) {
+ for (int i = 0; i < _backgroundObjectsSize; i++)
+ free(_backgroundObjects[i]);
+ free(_backgroundObjects);
+ }
free(_points);
- for (int i = 0; i < _cmdListSize; i++)
- free(_cmdList[i]);
- free(_cmdList);
+ if (_cmdList) {
+ for (int i = 0; i < _cmdListSize; i++)
+ free(_cmdList[i]);
+ free(_cmdList);
+ }
- for (int i = 0; i < _screenActsSize; i++)
- free(_screenActs[i]);
- free(_screenActs);
+ if (_cmdList) {
+ for (int i = 0; i < _screenActsSize; i++)
+ free(_screenActs[i]);
+ free(_screenActs);
+ }
_object->freeObjectArr();
_scheduler->freeActListArr();