TINSEL: Use SAVEGAME_ID when getting savegame info, if a VM is instantiated
This commit is contained in:
parent
23a0f5318c
commit
5974fcd0c1
1 changed files with 8 additions and 9 deletions
|
@ -154,16 +154,15 @@ static bool syncSaveGameHeader(Common::Serializer &s, SaveGameHeader &hdr) {
|
|||
syncTime(s, hdr.dateTime);
|
||||
|
||||
int tmp = hdr.size - s.bytesSynced();
|
||||
|
||||
// NOTE: We can't use SAVEGAME_ID here when attempting to remove a saved game from the launcher,
|
||||
// as there is no TinselEngine initialized then. This means that we can't check if this is a DW1
|
||||
// or DW2 savegame in this case, but it doesn't really matter, as the saved game is about to be
|
||||
// deleted anyway. Refer to bug #3387551.
|
||||
bool correctID = _vm ? (hdr.id == SAVEGAME_ID) : (hdr.id == DW1_SAVEGAME_ID || hdr.id == DW2_SAVEGAME_ID);
|
||||
|
||||
// Perform sanity check
|
||||
if (tmp < 0 ||
|
||||
// NOTE: We can't use SAVEGAME_ID here, as this function is called by the launcher
|
||||
// when deleting saved games. SAVEGAME_ID calls TinselEngine::getVersion(), and
|
||||
// TinselEngine isn't initialized then. Therefore, we use the two DW savegame
|
||||
// IDs instead, which means that this sanity check won't detect badly named DW1/DW2
|
||||
// saved games (i.e. a DW2 saved game named "dw.xxx"). Refer to bug #3387551.
|
||||
/*hdr.id != SAVEGAME_ID ||*/
|
||||
(hdr.id != DW1_SAVEGAME_ID && hdr.id != DW2_SAVEGAME_ID) ||
|
||||
hdr.ver > CURRENT_VER || hdr.size > 1024)
|
||||
if (tmp < 0 || !correctID || hdr.ver > CURRENT_VER || hdr.size > 1024)
|
||||
return false;
|
||||
// Skip over any extra bytes
|
||||
s.skip(tmp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue