aboutsummaryrefslogtreecommitdiff
path: root/engines/draci
diff options
context:
space:
mode:
authorPaul Gilbert2011-10-01 17:50:19 +1000
committerPaul Gilbert2011-10-01 17:50:19 +1000
commit9bb978486b102dc751922c6d5f4e729e264c2887 (patch)
tree65a5b4603f3f9c3376eed9fde8034f170ecb5ede /engines/draci
parent8465f9f99ff5eca617a57b4231efdbcf7c9f9e8a (diff)
downloadscummvm-rg350-9bb978486b102dc751922c6d5f4e729e264c2887.tar.gz
scummvm-rg350-9bb978486b102dc751922c6d5f4e729e264c2887.tar.bz2
scummvm-rg350-9bb978486b102dc751922c6d5f4e729e264c2887.zip
COMMON: Fix multiple engines asserting in querySaveMetaInfos for empty save slots
Diffstat (limited to 'engines/draci')
-rw-r--r--engines/draci/detection.cpp49
1 files changed, 26 insertions, 23 deletions
diff --git a/engines/draci/detection.cpp b/engines/draci/detection.cpp
index b7e83e1edb..e7fbaf62ef 100644
--- a/engines/draci/detection.cpp
+++ b/engines/draci/detection.cpp
@@ -155,30 +155,33 @@ void DraciMetaEngine::removeSaveState(const char *target, int slot) const {
SaveStateDescriptor DraciMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(
Draci::DraciEngine::getSavegameFile(slot));
- assert(f);
-
- Draci::DraciSavegameHeader header;
- Draci::readSavegameHeader(f, header);
- delete f;
-
- // Create the return descriptor
- SaveStateDescriptor desc(slot, header.saveName);
- desc.setDeletableFlag(true);
- desc.setWriteProtectedFlag(false);
- desc.setThumbnail(header.thumbnail);
-
- int day = (header.date >> 24) & 0xFF;
- int month = (header.date >> 16) & 0xFF;
- int year = header.date & 0xFFFF;
- desc.setSaveDate(year, month, day);
-
- int hour = (header.time >> 8) & 0xFF;
- int minutes = header.time & 0xFF;
- desc.setSaveTime(hour, minutes);
-
- desc.setPlayTime(header.playtime * 1000);
+
+ if (f) {
+ Draci::DraciSavegameHeader header;
+ Draci::readSavegameHeader(f, header);
+ delete f;
+
+ // Create the return descriptor
+ SaveStateDescriptor desc(slot, header.saveName);
+ desc.setDeletableFlag(true);
+ desc.setWriteProtectedFlag(false);
+ desc.setThumbnail(header.thumbnail);
+
+ int day = (header.date >> 24) & 0xFF;
+ int month = (header.date >> 16) & 0xFF;
+ int year = header.date & 0xFFFF;
+ desc.setSaveDate(year, month, day);
+
+ int hour = (header.time >> 8) & 0xFF;
+ int minutes = header.time & 0xFF;
+ desc.setSaveTime(hour, minutes);
+
+ desc.setPlayTime(header.playtime * 1000);
+
+ return desc;
+ }
- return desc;
+ return SaveStateDescriptor();
}
bool DraciMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {