[Scummvm-git-logs] scummvm branch-2-6 -> 18faa9db61235c836d12622621528e0c228b0733

mistydemeo noreply at scummvm.org
Tue Oct 11 17:07:02 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:
18faa9db61 DIRECTOR: only record valid MacArchive members


Commit: 18faa9db61235c836d12622621528e0c228b0733
    https://github.com/scummvm/scummvm/commit/18faa9db61235c836d12622621528e0c228b0733
Author: Misty De Meo (mistydemeo at gmail.com)
Date: 2022-10-11T09:56:30-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 906fe9c0a02..1c9b6051207 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -267,16 +267,27 @@ void MacArchive::readTags() {
 	Common::MacResTagArray tagArray = _resFork->getResTagArray();
 
 	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
 			res.name = _resFork->getResName(tagArray[i], idArray[j]);
 			debug(3, "Found MacArchive resource '%s' %d: %s", tag2str(tagArray[i]), idArray[j], res.name.c_str());
 		}
+
+		// 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