diff options
Diffstat (limited to 'engines/draci/detection.cpp')
-rw-r--r-- | engines/draci/detection.cpp | 49 |
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 { |