[Scummvm-git-logs] scummvm master -> e0d3b0573049b3f39cccbb69d5b4b1f5db4588fe

criezy criezy at scummvm.org
Sun Feb 21 21:09:11 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e0d3b05730 SWORD25: Fix running with non-extracted files


Commit: e0d3b0573049b3f39cccbb69d5b4b1f5db4588fe
    https://github.com/scummvm/scummvm/commit/e0d3b0573049b3f39cccbb69d5b4b1f5db4588fe
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2021-02-21T21:09:02Z

Commit Message:
SWORD25: Fix running with non-extracted files

After loading or saving a game, the engine believed it was running
with extracted files, when then cause a crash when looking for
files in the PackageManager.

This fixes bug #12173

Changed paths:
    engines/sword25/package/packagemanager.cpp
    engines/sword25/package/packagemanager.h
    engines/sword25/sword25.cpp


diff --git a/engines/sword25/package/packagemanager.cpp b/engines/sword25/package/packagemanager.cpp
index e33fe6798e..b57652e899 100644
--- a/engines/sword25/package/packagemanager.cpp
+++ b/engines/sword25/package/packagemanager.cpp
@@ -156,9 +156,6 @@ bool PackageManager::loadDirectoryAsPackage(const Common::String &directoryName,
 
 		_archiveList.push_front(new ArchiveEntry(folderArchive, mountPosition));
 
-		_extractedFiles = true;
-		_directoryName = directoryName;
-
 		return true;
 	}
 }
diff --git a/engines/sword25/package/packagemanager.h b/engines/sword25/package/packagemanager.h
index 5687763379..b958a445ec 100644
--- a/engines/sword25/package/packagemanager.h
+++ b/engines/sword25/package/packagemanager.h
@@ -104,6 +104,15 @@ public:
 		FT_FILE         = (1 << 1)
 	};
 
+	/**
+	 *
+	 * Set the PackageManager to run on extracted game files.s
+	 */
+	void setRunWithExtractedFiles(const Common::String &directoryName) {
+		_extractedFiles = true;
+		_directoryName = directoryName;
+	}
+
 	/**
 	 * Mounts the contents of a package in the directory specified in the directory tree.
 	 * @param FileName      The filename of the package to mount
diff --git a/engines/sword25/sword25.cpp b/engines/sword25/sword25.cpp
index 3591fcc864..88f6047999 100644
--- a/engines/sword25/sword25.cpp
+++ b/engines/sword25/sword25.cpp
@@ -109,7 +109,9 @@ Common::Error Sword25Engine::appStart() {
 	// Load packages
 	PackageManager *packageManagerPtr = Kernel::getInstance()->getPackage();
 	if (getGameFlags() & GF_EXTRACTED) {
-		if (!packageManagerPtr->loadDirectoryAsPackage(ConfMan.get("path"), "/"))
+		Common::String gameDirectory = ConfMan.get("path");
+		packageManagerPtr->setRunWithExtractedFiles(gameDirectory);
+		if (!packageManagerPtr->loadDirectoryAsPackage(gameDirectory, "/"))
 			return Common::kUnknownError;
 	} else {
 		if (!loadPackages())




More information about the Scummvm-git-logs mailing list