Skip to content

Commit 4d12b1d

Browse files
authored
Fix #14680: GUI: internalError with empty user includes (cppcheck-opensource#8478)
1 parent e6807a4 commit 4d12b1d

5 files changed

Lines changed: 24 additions & 2 deletions

File tree

gui/mainwindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ bool MainWindow::getCppcheckSettings(Settings& settings, Suppressions& supprs)
11221122
for (const QString& undefine : undefines)
11231123
settings.userUndefs.insert(undefine.toStdString());
11241124

1125-
settings.userIncludes.push_back(mProjectFile->getUserInclude().toStdString());
1125+
mProjectFile->setSettingsUserIncludes(settings);
11261126

11271127
const QStringList libraries = mProjectFile->getLibraries();
11281128
for (const QString& library : libraries) {

gui/projectfile.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,12 @@ void ProjectFile::writeStringList(QXmlStreamWriter &xmlWriter, const QStringList
10781078
xmlWriter.writeEndElement();
10791079
}
10801080

1081+
void ProjectFile::setSettingsUserIncludes(Settings &settings) const
1082+
{
1083+
if (!mUserInclude.isEmpty())
1084+
settings.userIncludes.push_back(mUserInclude.toStdString());
1085+
}
1086+
10811087
QStringList ProjectFile::fromNativeSeparators(const QStringList &paths)
10821088
{
10831089
QStringList ret;

gui/projectfile.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class ProjectFile : public QObject {
146146
}
147147

148148
void setUserInclude(const QString& userInclude) {
149-
mUserInclude = userInclude;
149+
mUserInclude = userInclude.trimmed();
150150
}
151151

152152
/**
@@ -452,8 +452,13 @@ class ProjectFile : public QObject {
452452

453453
/** Get paths where we should glob for certain files (dir="cfg"/"platforms"/etc */
454454
QStringList getSearchPaths(const QString& dir) const;
455+
455456
static QStringList getSearchPaths(const QString& projectPath, const QString& appPath, const QString& datadir, const QString& dir);
456457

458+
/** Set user includes in settings if non-empty */
459+
void setSettingsUserIncludes(Settings &settings) const;
460+
461+
457462
protected:
458463

459464
/**

gui/test/projectfile/testprojectfile.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,5 +199,14 @@ void TestProjectFile::getCheckingSuppressionsStar() const
199199
QCOMPARE(projectFile.getCheckingSuppressions()[0].fileName, "*.cpp");
200200
}
201201

202+
void TestProjectFile::emptyUserInclude() const
203+
{
204+
ProjectFile projectFile;
205+
Settings settings;
206+
projectFile.setUserInclude(" ");
207+
projectFile.setSettingsUserIncludes(settings);
208+
QCOMPARE(settings.userIncludes.size(), 0);
209+
}
210+
202211
QTEST_MAIN(TestProjectFile)
203212

gui/test/projectfile/testprojectfile.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ private slots:
3636
void getCheckingSuppressionsRelative() const;
3737
void getCheckingSuppressionsAbsolute() const;
3838
void getCheckingSuppressionsStar() const;
39+
40+
void emptyUserInclude() const;
3941
};

0 commit comments

Comments
 (0)