diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-03-28 23:59:10 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-03-28 23:59:10 (GMT) |
| commit | 1f388e4ca02f0a84e4b9d9b19e6308224389818d (patch) | |
| tree | 3cb5d7caf052d57e6873a291bbe451a4119bdcef /src/game/GameModel.cpp | |
| parent | e9770d8ee7a44d5680c23749c786a03c0d5b41ff (diff) | |
| download | powder-1f388e4ca02f0a84e4b9d9b19e6308224389818d.zip powder-1f388e4ca02f0a84e4b9d9b19e6308224389818d.tar.gz | |
Exception when loading invalid save
Diffstat (limited to 'src/game/GameModel.cpp')
| -rw-r--r-- | src/game/GameModel.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 85f4249..a1d6b8b 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -8,6 +8,7 @@ #include "EllipseBrush.h" #include "client/Client.h" #include "game/DecorationTool.h" +#include "SaveLoadException.h" GameModel::GameModel(): activeTools({NULL, NULL, NULL}), @@ -257,7 +258,12 @@ void GameModel::SetSave(Save * newSave) currentSave = newSave; if(currentSave) { - sim->Load(currentSave->GetData(), currentSave->GetDataLength()); + int returnVal = sim->Load(currentSave->GetData(), currentSave->GetDataLength()); + if(returnVal){ + delete currentSave; + currentSave = NULL; + throw SaveLoadException(returnVal==2?"Save from newer version":"Save data corrupt"); + } } notifySaveChanged(); notifyPausedChanged(); |
