forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -382,10 +382,13 @@ void GenericProject::parseProject(RefreshOptions options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GenericProject::findCommonSourceRoot(const QStringList &list)
|
FilePath GenericProject::findCommonSourceRoot()
|
||||||
{
|
{
|
||||||
QString root = list.front();
|
if (m_files.isEmpty())
|
||||||
for (const QString &item : list) {
|
return FilePath::fromFileInfo(QFileInfo(m_filesFileName).absolutePath());
|
||||||
|
|
||||||
|
QString root = m_files.front();
|
||||||
|
for (const QString &item : m_files) {
|
||||||
if (root.length() > item.length())
|
if (root.length() > item.length())
|
||||||
root.truncate(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)
|
void GenericProject::refresh(RefreshOptions options)
|
||||||
@@ -408,7 +411,7 @@ void GenericProject::refresh(RefreshOptions options)
|
|||||||
auto newRoot = std::make_unique<GenericProjectNode>(this);
|
auto newRoot = std::make_unique<GenericProjectNode>(this);
|
||||||
|
|
||||||
// find the common base directory of all source files
|
// 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) {
|
for (const QString &f : m_files) {
|
||||||
FileType fileType = FileType::Source; // ### FIXME
|
FileType fileType = FileType::Source; // ### FIXME
|
||||||
|
@@ -66,7 +66,7 @@ private:
|
|||||||
QStringList processEntries(const QStringList &paths,
|
QStringList processEntries(const QStringList &paths,
|
||||||
QHash<QString, QString> *map = nullptr) const;
|
QHash<QString, QString> *map = nullptr) const;
|
||||||
|
|
||||||
static QString findCommonSourceRoot(const QStringList &list);
|
Utils::FilePath findCommonSourceRoot();
|
||||||
void refreshCppCodeModel();
|
void refreshCppCodeModel();
|
||||||
void updateDeploymentData();
|
void updateDeploymentData();
|
||||||
void activeTargetWasChanged();
|
void activeTargetWasChanged();
|
||||||
|
Reference in New Issue
Block a user