[Scummvm-cvs-logs] SF.net SVN: scummvm:[49424] scummvm/trunk/engines/sci/engine/kfile.cpp
waltervn at users.sourceforge.net
waltervn at users.sourceforge.net
Fri Jun 4 12:36:50 CEST 2010
Revision: 49424
http://scummvm.svn.sourceforge.net/scummvm/?rev=49424&view=rev
Author: waltervn
Date: 2010-06-04 10:36:49 +0000 (Fri, 04 Jun 2010)
Log Message:
-----------
SCI: Add savegame version check in CheckSaveGame
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kfile.cpp
Modified: scummvm/trunk/engines/sci/engine/kfile.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kfile.cpp 2010-06-04 10:15:13 UTC (rev 49423)
+++ scummvm/trunk/engines/sci/engine/kfile.cpp 2010-06-04 10:36:49 UTC (rev 49424)
@@ -44,6 +44,7 @@
int id;
int date;
int time;
+ int version;
char name[SCI_MAX_SAVENAME_LENGTH];
};
@@ -276,6 +277,7 @@
// We need to fix date in here, because we save DDMMYYYY instead of YYYYMMDD, so sorting wouldnt work
desc.date = ((desc.date & 0xFFFF) << 16) | ((desc.date & 0xFF0000) >> 8) | ((desc.date & 0xFF000000) >> 24);
desc.time = meta.savegame_time;
+ desc.version = meta.savegame_version;
if (meta.savegame_name.lastChar() == '\n')
meta.savegame_name.deleteLastChar();
@@ -444,7 +446,17 @@
Common::Array<SavegameDesc> saves;
listSavegames(saves);
- return make_reg(0, savedir_nr < saves.size());
+ // Check for savegame slot being out of range
+ if (savedir_nr >= saves.size())
+ return NULL_REG;
+
+ // Check for compatible savegame version
+ int ver = saves[savedir_nr].version;
+ if (ver < MINIMUM_SAVEGAME_VERSION || ver > CURRENT_SAVEGAME_VERSION)
+ return NULL_REG;
+
+ // Otherwise we assume the savegame is OK
+ return make_reg(0, 1);
}
reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list