diff options
| author | Tannin <sherb@gmx.net> | 2015-12-18 20:28:03 +0100 |
|---|---|---|
| committer | Tannin <sherb@gmx.net> | 2015-12-18 20:28:03 +0100 |
| commit | 4908affbfceee55d09426b7cab94d155d36d0d90 (patch) | |
| tree | 8eb32202458a57e0169b7a5f5161d8256c39d6a5 /src/savegamegamebryo.cpp | |
| parent | 8dc51895e38eec26763ea8b964c23fbe2a348ffe (diff) | |
fixed display of savegame widget in case parsing fails
Diffstat (limited to 'src/savegamegamebryo.cpp')
| -rw-r--r-- | src/savegamegamebryo.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/savegamegamebryo.cpp b/src/savegamegamebryo.cpp index 7aa6cdfc..3fc96bef 100644 --- a/src/savegamegamebryo.cpp +++ b/src/savegamegamebryo.cpp @@ -32,13 +32,29 @@ SaveGameGamebryo::SaveGameGamebryo(QObject *parent, const QString &fileName, IPl : SaveGame(parent, fileName, game)
, m_Plugins()
{
- SaveGameInfo const *info = game->feature<SaveGameInfo>();
+ // ensure creation time is set to a valid, preferrably even a reasonable value
+ memset(&m_CreationTime, 0, sizeof(SYSTEMTIME));
+ HANDLE fileHandle = CreateFileW(fileName.toStdWString().c_str(),
+ GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ nullptr,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ nullptr);
+ if (fileHandle != INVALID_HANDLE_VALUE) {
+ FILETIME creationTime;
+ if (GetFileTime(fileHandle, &creationTime, nullptr, nullptr)) {
+ FileTimeToSystemTime(&creationTime, &m_CreationTime);
+ }
+ }
+
+ const SaveGameInfo *info = game->feature<SaveGameInfo>();
if (info != nullptr) {
- ISaveGame const *save = info->getSaveGameInfo(fileName);
+ const ISaveGame *save = info->getSaveGameInfo(fileName);
m_Save = save;
//Kludgery
- GamebryoSaveGame const *s = dynamic_cast<GamebryoSaveGame const *>(save);
+ const GamebryoSaveGame *s = dynamic_cast<const GamebryoSaveGame *>(save);
m_PCName = s->getPCName();
m_PCLevel = s->getPCLevel();
m_PCLocation = s->getPCLocation();
|
