aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-09-10 19:18:12 +0300
committerThanasis Antoniou2019-09-10 19:18:45 +0300
commit2003c12bc3fcdd8540cbe8942c86980f2d1b2131 (patch)
treed2518d57f9488f5edbfc0b333f58f449027dfb87 /engines/bladerunner
parentbef3f902e693a4f17fef896d8a991077d1a602a6 (diff)
downloadscummvm-rg350-2003c12bc3fcdd8540cbe8942c86980f2d1b2131.tar.gz
scummvm-rg350-2003c12bc3fcdd8540cbe8942c86980f2d1b2131.tar.bz2
scummvm-rg350-2003c12bc3fcdd8540cbe8942c86980f2d1b2131.zip
BLADERUNNER: Move shutdown() in Engine destructor
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/bladerunner.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index a2fa003ae6..e83c8114a1 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -226,6 +226,7 @@ BladeRunnerEngine::BladeRunnerEngine(OSystem *syst, const ADGameDescription *des
}
BladeRunnerEngine::~BladeRunnerEngine() {
+ shutdown();
}
bool BladeRunnerEngine::hasFeature(EngineFeature f) const {
@@ -322,7 +323,7 @@ Common::Error BladeRunnerEngine::run() {
}
missingFileStr += missingFiles[i];
}
-
+ // shutting down
return Common::Error(Common::kNoGameDataFoundError, missingFileStr);
}
@@ -335,7 +336,7 @@ Common::Error BladeRunnerEngine::run() {
bool hasSavegames = !SaveFileManager::list(_targetName).empty();
if (!startup(hasSavegames)) {
- shutdown();
+ // shutting down
return Common::Error(Common::kUnknownError, _("Failed to initialize resources"));
}
@@ -402,8 +403,7 @@ Common::Error BladeRunnerEngine::run() {
}
} while (_gameOver); // if main game loop ended and _gameOver == false, then shutdown
- shutdown();
-
+ // shutting down
return Common::kNoError;
}
@@ -798,7 +798,11 @@ void BladeRunnerEngine::shutdown() {
_playerActor = nullptr;
delete _actors[kActorVoiceOver];
_actors[kActorVoiceOver] = nullptr;
- int actorCount = (int)_gameInfo->getActorCount();
+ int actorCount = kActorCount;
+ if (_gameInfo) {
+ actorCount = (int)_gameInfo->getActorCount();
+ }
+
for (int i = 0; i < actorCount; ++i) {
delete _actors[i];
_actors[i] = nullptr;