diff options
author | Strangerke | 2016-01-25 00:21:28 +0100 |
---|---|---|
committer | Strangerke | 2016-01-25 00:21:28 +0100 |
commit | fb34336863ec8942ef7365c5decfdafcb020bc6a (patch) | |
tree | 2e614484353be040a9b816ae95ad67e82453190b /engines/lab | |
parent | 78b9a903add0431893c92e5e4c8f01b761a48277 (diff) | |
download | scummvm-rg350-fb34336863ec8942ef7365c5decfdafcb020bc6a.tar.gz scummvm-rg350-fb34336863ec8942ef7365c5decfdafcb020bc6a.tar.bz2 scummvm-rg350-fb34336863ec8942ef7365c5decfdafcb020bc6a.zip |
LAB: Do not crash the DOS version in case of missing file as some files are known to be missing in the original
Diffstat (limited to 'engines/lab')
-rw-r--r-- | engines/lab/anim.cpp | 3 | ||||
-rw-r--r-- | engines/lab/resource.cpp | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/engines/lab/anim.cpp b/engines/lab/anim.cpp index 3da4519109..f2e6992375 100644 --- a/engines/lab/anim.cpp +++ b/engines/lab/anim.cpp @@ -287,6 +287,9 @@ void Anim::readDiff(Common::File *diffFile, bool playOnce, bool onlyDiffData) { _continuous = false; + if (!_diffFile) + return; + uint32 magicBytes = _diffFile->readUint32LE(); if (magicBytes != 1219009121) { _isPlaying = false; diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp index 096d29361f..ed0cb37c67 100644 --- a/engines/lab/resource.cpp +++ b/engines/lab/resource.cpp @@ -211,9 +211,15 @@ Common::String Resource::translateFileName(const Common::String filename) { Common::File *Resource::openDataFile(const Common::String filename, uint32 fileHeader) { Common::File *dataFile = new Common::File(); dataFile->open(translateFileName(filename)); - if (!dataFile->isOpen()) - error("openDataFile: Couldn't open %s (%s)", translateFileName(filename).c_str(), filename.c_str()); - + warning("%s", filename.c_str()); + if (!dataFile->isOpen()) { + // The DOS version is known to have some missing files + if (_vm->getPlatform() == Common::kPlatformDOS) { + warning("Incomplete DOS version, skipping file %s", filename.c_str()); + return nullptr; + } else + error("openDataFile: Couldn't open %s (%s)", translateFileName(filename).c_str(), filename.c_str()); + } if (fileHeader > 0) { uint32 headerTag = dataFile->readUint32BE(); if (headerTag != fileHeader) { |