diff options
-rw-r--r-- | engines/sci/resource.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 2e64b1080c..b2b422f3cb 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -2103,7 +2103,12 @@ Resource *ResourceManager::updateResource(ResourceId resId, ResourceSource *src, return res; } - if (validateResource(resId, sourceMapLocation, src->getLocationName(), offset, size, volumeFile->size())) { + // Resources from MacResourceForkResourceSource do not have a source size + // since the source "volume file" is the empty data fork, and they don't + // have an offset either since the MacResManager handles this, so trying to + // validate these resources using the normal validation would always fail + if (src->getSourceType() == kSourceMacResourceFork || + validateResource(resId, sourceMapLocation, src->getLocationName(), offset, size, volumeFile->size())) { if (res == nullptr) { res = new Resource(this, resId); _resMap.setVal(resId, res); |