From 9cb7caeb247adbc60ab67045c79ee24f3f497026 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 20 Feb 2016 16:55:01 +0200 Subject: SCI: Fix a regression in the fallback detector. Some cleanup Removed the superfluous initForDetection() function, which was not updated in commit 2f17ba2b0ab77ef939c21efa04f7aaafccbd0c37 and caused the fallback detector to crash because of uninitialized variables --- engines/sci/detection.cpp | 2 +- engines/sci/resource.cpp | 35 ++++++++--------------------------- engines/sci/resource.h | 5 ----- 3 files changed, 9 insertions(+), 33 deletions(-) diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index f4f104010f..05c00bff0b 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -578,7 +578,7 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const FileMap &allFiles, ResourceManager resMan; resMan.addAppropriateSourcesForDetection(fslist); - resMan.initForDetection(); + resMan.init(); // TODO: Add error handling. #ifndef ENABLE_SCI32 diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 86c5f52455..2a4cd95b91 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -944,35 +944,14 @@ void ResourceManager::init() { debugC(1, kDebugLevelResMan, "resMan: Detected SCI1.1 VGA graphic resources"); break; default: -#ifdef ENABLE_SCI32 - error("resMan: Couldn't determine view type"); -#else - if (getSciVersion() >= SCI_VERSION_2) { - // SCI support isn't built in, thus the view type won't be determined for - // SCI2+ games. This will be handled further up, so throw no error here - } else { - error("resMan: Couldn't determine view type"); - } -#endif + // Throw a warning, but do not error out here, because this is called from the + // fallback detector, and the user could be pointing to a folder with a non-SCI + // game, but with SCI-like file names (e.g. Pinball Creep) + warning("resMan: Couldn't determine view type"); + break; } } -void ResourceManager::initForDetection() { - assert(!g_sci); - - _memoryLocked = 0; - _memoryLRU = 0; - _LRU.clear(); - _resMap.clear(); - _audioMapSCI1 = NULL; - - _mapVersion = detectMapVersion(); - _volVersion = detectVolVersion(); - - scanNewSources(); - detectSciVersion(); -} - ResourceManager::~ResourceManager() { // freeing resources ResourceMap::iterator itr = _resMap.begin(); @@ -2483,7 +2462,9 @@ bool ResourceManager::hasOldScriptHeader() { Resource *res = findResource(ResourceId(kResourceTypeScript, 0), 0); if (!res) { - error("resMan: Failed to find script.000"); + // Script 0 missing -> corrupted / non-SCI resource files. + // Don't error out here, because this might have been called + // from the fallback detector return false; } diff --git a/engines/sci/resource.h b/engines/sci/resource.h index 46ac2bb944..ef474d97c2 100644 --- a/engines/sci/resource.h +++ b/engines/sci/resource.h @@ -314,11 +314,6 @@ public: */ void init(); - /** - * Similar to the function above, only called from the fallback detector - */ - void initForDetection(); - /** * Adds all of the resource files for a game */ -- cgit v1.2.3