diff --git a/gui/projectfiledialog.cpp b/gui/projectfiledialog.cpp index 47e6c3965c1..90c4b83fd84 100644 --- a/gui/projectfiledialog.cpp +++ b/gui/projectfiledialog.cpp @@ -753,34 +753,21 @@ void ProjectFileDialog::setLibraries(const QStringList &libraries) void ProjectFileDialog::addSingleSuppression(const Suppressions::Suppression &suppression) { - QString suppression_name; - static const char sep = QDir::separator().toLatin1(); - bool found_relative = false; - - // Replace relative file path in the suppression with the absolute one - if ((suppression.fileName.find('*') == std::string::npos) && - (suppression.fileName.find(sep) == std::string::npos)) { - QFileInfo inf(mProjectFile->getFilename()); - QString rootpath = inf.absolutePath(); - if (QFile::exists(QString{"%1%2%3"}.arg(rootpath, - QDir::separator(), - QString::fromStdString(suppression.fileName)))) { - Suppressions::Suppression sup = suppression; - sup.fileName = rootpath.toLatin1().constData(); - sup.fileName += sep; - sup.fileName += suppression.fileName; - mSuppressions += sup; - suppression_name = QString::fromStdString(sup.getText()); - found_relative = true; + Suppressions::Suppression sup = suppression; + + if (sup.fileName.empty()) { + // Empty file name, replace by wildcard + sup.fileName = "*"; + } else if (sup.fileName.find('*') == std::string::npos) { + // File name does not contain wildcard, enforce absolute path (dir is ignored if fileName already is absolute) + QFileInfo inf(QFileInfo(mProjectFile->getFilename()).absoluteDir(), QString::fromStdString(sup.fileName)); + if (inf.exists()) { + sup.fileName = QDir::toNativeSeparators(inf.absoluteFilePath()).toStdString(); } } - if (!found_relative) { - mSuppressions += suppression; - suppression_name = QString::fromStdString(suppression.getText()); - } - - mUI->mListSuppressions->addItem(suppression_name); + mSuppressions += sup; + mUI->mListSuppressions->addItem(QString::fromStdString(sup.getText())); } void ProjectFileDialog::setSuppressions(const QList &suppressions)