From dd2425eb02db456b851c4662ff6a65d0b54b7eeb Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Date: Thu, 5 Sep 2013 18:30:05 +0200 Subject: [PATCH] make setting a bad $$[QMAKEFEATURES] not crash qmake Task-number: QTBUG-29642 Change-Id: I9cc209eb313f03bf342bcb64b1de3005755700a7 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> (cherry picked from qtbase/50a90720be7d67dcdfe704a82fb3b1138edd2aab) --- src/shared/proparser/qmakeevaluator.cpp | 4 ++-- src/shared/proparser/qmakeglobals.cpp | 24 ++++++++++++++---------- src/shared/proparser/qmakeglobals.h | 1 + 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index 1da18a3980f..b8caf126948 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -1445,8 +1445,8 @@ void QMakeEvaluator::updateFeaturePaths() feature_roots += m_qmakefeatures; - feature_roots += m_option->propertyValue(ProKey("QMAKEFEATURES")).toQString(m_mtmp).split( - m_option->dirlist_sep, QString::SkipEmptyParts); + feature_roots += m_option->splitPathList( + m_option->propertyValue(ProKey("QMAKEFEATURES")).toQString(m_mtmp)); QStringList feature_bases; if (!m_buildRoot.isEmpty()) { diff --git a/src/shared/proparser/qmakeglobals.cpp b/src/shared/proparser/qmakeglobals.cpp index 5f0b521e460..d34d7ba4e65 100644 --- a/src/shared/proparser/qmakeglobals.cpp +++ b/src/shared/proparser/qmakeglobals.cpp @@ -258,6 +258,19 @@ QString QMakeGlobals::shadowedPath(const QString &fileName) const return QString(); } +QStringList QMakeGlobals::splitPathList(const QString &val) const +{ + QStringList ret; + if (!val.isEmpty()) { + QDir bdir; + QStringList vals = val.split(dirlist_sep); + ret.reserve(vals.length()); + foreach (const QString &it, vals) + ret << QDir::cleanPath(bdir.absoluteFilePath(it)); + } + return ret; +} + QString QMakeGlobals::getEnv(const QString &var) const { #ifdef PROEVALUATOR_SETENV @@ -269,16 +282,7 @@ QString QMakeGlobals::getEnv(const QString &var) const QStringList QMakeGlobals::getPathListEnv(const QString &var) const { - QStringList ret; - QString val = getEnv(var); - if (!val.isEmpty()) { - QDir bdir; - QStringList vals = val.split(dirlist_sep); - ret.reserve(vals.length()); - foreach (const QString &it, vals) - ret << QDir::cleanPath(bdir.absoluteFilePath(it)); - } - return ret; + return splitPathList(getEnv(var)); } QString QMakeGlobals::expandEnvVars(const QString &str) const diff --git a/src/shared/proparser/qmakeglobals.h b/src/shared/proparser/qmakeglobals.h index ecdf316c7bc..4e45f3fb6a9 100644 --- a/src/shared/proparser/qmakeglobals.h +++ b/src/shared/proparser/qmakeglobals.h @@ -135,6 +135,7 @@ public: QString expandEnvVars(const QString &str) const; QString shadowedPath(const QString &fileName) const; + QStringList splitPathList(const QString &value) const; private: QString getEnv(const QString &) const; -- GitLab