[Scummvm-git-logs] scummvm master -> 1ed15b789d0f623fc1fab520e8a5fca6ba003ac3

mistydemeo noreply at scummvm.org
Wed Aug 10 05:49:26 UTC 2022


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:
1ed15b789d DIRECTOR: only record valid MacArchive members


Commit: 1ed15b789d0f623fc1fab520e8a5fca6ba003ac3
    https://github.com/scummvm/scummvm/commit/1ed15b789d0f623fc1fab520e8a5fca6ba003ac3
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2022-08-09T22:22:11-07:00

Commit Message:
DIRECTOR: only record valid MacArchive members

Changed paths:
    engines/director/archive.cpp


diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index f37173cf2b7..500345161eb 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -310,10 +310,16 @@ void MacArchive::readTags() {
 	Common::DumpFile out;
 
 	for (uint32 i = 0; i < tagArray.size(); i++) {
-		ResourceMap &resMap = _types[tagArray[i]];
+		ResourceMap resMap;
 		Common::MacResIDArray idArray = _resFork->getResIDArray(tagArray[i]);
 
 		for (uint32 j = 0; j < idArray.size(); j++) {
+			// Avoid assigning invalid entries to _types, because other
+			// functions will assume they exist and are valid if listed.
+			if (_resFork->getResource(tagArray[i], idArray[j]) == nullptr) {
+				continue;
+			}
+
 			Resource &res = resMap[idArray[j]];
 
 			res.offset = res.size = 0; // unused
@@ -324,6 +330,11 @@ void MacArchive::readTags() {
 			if (ConfMan.getBool("dump_scripts"))
 				dumpChunk(res, out);
 		}
+
+		// Don't assign a 0-entry resMap to _types.
+		if (resMap.size() > 0) {
+			 _types[tagArray[i]] = resMap;
+		}
 	}
 }
 




More information about the Scummvm-git-logs mailing list