diff options
author | Christian Stenger <christian.stenger@qt.io> | 2019-07-18 09:28:34 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2019-07-19 05:43:02 +0000 |
commit | 4c6c3de53b658c8957db228834beb19f02f57751 (patch) | |
tree | c08df800ffa5ecaa8f093d97349e5cf2286dabb9 /src/plugins/genericprojectmanager | |
parent | 7b4cde9d65ab7a2001e60efffd80329fe1cb21ac (diff) | |
download | qt-creator-4c6c3de53b658c8957db228834beb19f02f57751.tar.gz |
GenericProjectManager: Do not crash on removing all files
When removing all files from a generic project QC crashed on
trying to access the first item of the empty file list.
Change-Id: I85045bf126f4e12575305466f0f4a6c4191176d3
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/genericprojectmanager')
-rw-r--r-- | src/plugins/genericprojectmanager/genericproject.cpp | 13 | ||||
-rw-r--r-- | src/plugins/genericprojectmanager/genericproject.h | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 89051f2a4a..c15b9d85fb 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -382,10 +382,13 @@ void GenericProject::parseProject(RefreshOptions options) } } -QString GenericProject::findCommonSourceRoot(const QStringList &list) +FilePath GenericProject::findCommonSourceRoot() { - QString root = list.front(); - for (const QString &item : list) { + if (m_files.isEmpty()) + return FilePath::fromFileInfo(QFileInfo(m_filesFileName).absolutePath()); + + QString root = m_files.front(); + for (const QString &item : m_files) { if (root.length() > item.length()) root.truncate(item.length()); @@ -396,7 +399,7 @@ QString GenericProject::findCommonSourceRoot(const QStringList &list) } } } - return QFileInfo(root).absolutePath(); + return FilePath::fromString(QFileInfo(root).absolutePath()); } void GenericProject::refresh(RefreshOptions options) @@ -408,7 +411,7 @@ void GenericProject::refresh(RefreshOptions options) auto newRoot = std::make_unique<GenericProjectNode>(this); // find the common base directory of all source files - Utils::FilePath baseDir = FilePath::fromFileInfo(QFileInfo(findCommonSourceRoot(m_files))); + Utils::FilePath baseDir = findCommonSourceRoot(); for (const QString &f : m_files) { FileType fileType = FileType::Source; // ### FIXME diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index d914ddc149..9f742f322f 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -66,7 +66,7 @@ private: QStringList processEntries(const QStringList &paths, QHash<QString, QString> *map = nullptr) const; - static QString findCommonSourceRoot(const QStringList &list); + Utils::FilePath findCommonSourceRoot(); void refreshCppCodeModel(); void updateDeploymentData(); void activeTargetWasChanged(); |