diff --git a/src/Gui/DocumentRecovery.cpp b/src/Gui/DocumentRecovery.cpp index 539cddecbe..642f730332 100644 --- a/src/Gui/DocumentRecovery.cpp +++ b/src/Gui/DocumentRecovery.cpp @@ -49,6 +49,7 @@ #include #include +#include #include #include #include @@ -164,6 +165,7 @@ public: QList recoveryInfo; Info getRecoveryInfo(const QFileInfo&) const; + bool isValidProject(const QFileInfo&) const; void writeRecoveryInfo(const Info&) const; XmlConfig readXmlFile(const QString& fn) const; }; @@ -433,7 +435,7 @@ DocumentRecoveryPrivate::Info DocumentRecoveryPrivate::getRecoveryInfo(const QFi if (info.status == DocumentRecoveryPrivate::Created) { // compare the modification dates QFileInfo fileInfo(info.fileName); - if (!info.fileName.isEmpty() && fileInfo.exists()) { + if (!info.fileName.isEmpty() && isValidProject(fileInfo)) { QDateTime dateRecv = QFileInfo(file).lastModified(); QDateTime dateProj = fileInfo.lastModified(); if (dateRecv < dateProj) { @@ -449,6 +451,16 @@ DocumentRecoveryPrivate::Info DocumentRecoveryPrivate::getRecoveryInfo(const QFi return info; } +bool DocumentRecoveryPrivate::isValidProject(const QFileInfo& fi) const +{ + if (!fi.exists()) { + return false; + } + + App::ProjectFile project(fi.absoluteFilePath().toStdString()); + return project.loadDocument(); +} + DocumentRecoveryPrivate::XmlConfig DocumentRecoveryPrivate::readXmlFile(const QString& fn) const { DocumentRecoveryPrivate::XmlConfig cfg;