summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTannin <sherb@gmx.net>2015-12-18 20:28:03 +0100
committerTannin <sherb@gmx.net>2015-12-18 20:28:03 +0100
commit4908affbfceee55d09426b7cab94d155d36d0d90 (patch)
tree8eb32202458a57e0169b7a5f5161d8256c39d6a5 /src
parent8dc51895e38eec26763ea8b964c23fbe2a348ffe (diff)
fixed display of savegame widget in case parsing fails
Diffstat (limited to 'src')
-rw-r--r--src/savegame.h8
-rw-r--r--src/savegamegamebryo.cpp22
-rw-r--r--src/savegamegamebyro.h2
3 files changed, 24 insertions, 8 deletions
diff --git a/src/savegame.h b/src/savegame.h
index d1bf4691..e7220fcc 100644
--- a/src/savegame.h
+++ b/src/savegame.h
@@ -106,10 +106,10 @@ public:
protected:
QString m_FileName;
- QString m_PCName;
- unsigned short m_PCLevel;
- QString m_PCLocation;
- unsigned long m_SaveNumber;
+ QString m_PCName { "N/A" };
+ unsigned short m_PCLevel { 0 };
+ QString m_PCLocation { "N/A" };
+ unsigned long m_SaveNumber { 0 };
SYSTEMTIME m_CreationTime;
QImage m_Screenshot;
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();
diff --git a/src/savegamegamebyro.h b/src/savegamegamebyro.h
index b7a5ba12..5ac62848 100644
--- a/src/savegamegamebyro.h
+++ b/src/savegamegamebyro.h
@@ -70,7 +70,7 @@ private:
QStringList m_Plugins;
//Note: This isn't owned by us so safe to copy
- MOBase::ISaveGame const *m_Save;
+ const MOBase::ISaveGame *m_Save;
};