aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/staticres.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/staticres.cpp')
-rw-r--r--engines/kyra/staticres.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp
index 5cfd682b9c..543a5c8162 100644
--- a/engines/kyra/staticres.cpp
+++ b/engines/kyra/staticres.cpp
@@ -145,20 +145,22 @@ bool StaticResource::loadStaticResourceFile() {
bool foundWorkingKyraDat = false;
for (Common::ArchiveMemberList::iterator i = kyraDatFiles.begin(); i != kyraDatFiles.end(); ++i) {
Common::SeekableReadStream *file = (*i)->open();
- if (checkKyraDat(file)) {
- file->seek(0, SEEK_SET);
-
- Common::ArchivePtr archive = res->loadArchive(staticDataFilename(), *i);
- if (archive) {
- res->_archiveFiles->add(staticDataFilename(), archive, 0);
- foundWorkingKyraDat = tryKyraDatLoad();
- }
+ if (!checkKyraDat(file)) {
+ delete file;
+ continue;
}
- delete file;
+ delete file; file = 0;
- if (foundWorkingKyraDat)
+ Common::ArchivePtr archive = res->loadArchive(staticDataFilename(), *i);
+ if (!archive)
+ continue;
+
+ res->_archiveFiles->add(staticDataFilename(), archive, 0);
+ if (tryKyraDatLoad()) {
+ foundWorkingKyraDat = true;
break;
+ }
res->_archiveCache.erase(staticDataFilename());
res->_archiveFiles->remove(staticDataFilename());