summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2019-07-18 09:28:34 +0200
committerChristian Stenger <christian.stenger@qt.io>2019-07-19 05:43:02 +0000
commit4c6c3de53b658c8957db228834beb19f02f57751 (patch)
treec08df800ffa5ecaa8f093d97349e5cf2286dabb9 /src
parent7b4cde9d65ab7a2001e60efffd80329fe1cb21ac (diff)
downloadqt-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')
-rw-r--r--src/plugins/genericprojectmanager/genericproject.cpp13
-rw-r--r--src/plugins/genericprojectmanager/genericproject.h2
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();