aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2011-08-07 15:08:14 +0300
committerFilippos Karapetis2011-08-07 15:10:17 +0300
commit5974fcd0c1cac3f57700a9efcd7899e8f89ef3e5 (patch)
treeec47389b9e884321d12aae928e3f355976d97445
parent23a0f5318c50cdf3dce19e4de0c98fb5ae1c2618 (diff)
downloadscummvm-rg350-5974fcd0c1cac3f57700a9efcd7899e8f89ef3e5.tar.gz
scummvm-rg350-5974fcd0c1cac3f57700a9efcd7899e8f89ef3e5.tar.bz2
scummvm-rg350-5974fcd0c1cac3f57700a9efcd7899e8f89ef3e5.zip
TINSEL: Use SAVEGAME_ID when getting savegame info, if a VM is instantiated
-rw-r--r--engines/tinsel/saveload.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/engines/tinsel/saveload.cpp b/engines/tinsel/saveload.cpp
index 983259d515..4ac172be43 100644
--- a/engines/tinsel/saveload.cpp
+++ b/engines/tinsel/saveload.cpp
@@ -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);