make setting a bad $$[QMAKEFEATURES] not crash qmake

Task-number: QTBUG-29642
Change-Id: I9cc209eb313f03bf342bcb64b1de3005755700a7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Oswald Buddenhagen 2013-09-05 18:30:05 +02:00 committed by The Qt Project
parent 51c04e292e
commit 50a90720be
3 changed files with 17 additions and 12 deletions

View File

@ -1452,8 +1452,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()) {

View File

@ -270,6 +270,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
@ -281,16 +294,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

View File

@ -147,6 +147,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;