diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index 8b27435ea857982f8389f0201b5b39d24431e476..8bcb8f29986b391c38fa1a91b1ca342b9b3088b6 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -185,6 +185,7 @@ QMakeEvaluator::QMakeEvaluator(QMakeGlobals *option, m_loopLevel = 0; m_listCount = 0; m_valuemapStack.push(ProValueMap()); + m_valuemapInited = false; } QMakeEvaluator::~QMakeEvaluator() @@ -196,6 +197,7 @@ void QMakeEvaluator::initFrom(const QMakeEvaluator &other) Q_ASSERT_X(&other, "QMakeEvaluator::visitProFile", "Project not prepared"); m_functionDefs = other.m_functionDefs; m_valuemapStack = other.m_valuemapStack; + m_valuemapInited = true; m_qmakespec = other.m_qmakespec; m_qmakespecFull = other.m_qmakespecFull; m_qmakespecName = other.m_qmakespecName; @@ -947,6 +949,8 @@ void QMakeEvaluator::loadDefaults() vars[ProString("QMAKE_HOST.arch")] << ProString(name.machine, NoHash); } #endif + + m_valuemapInited = true; } bool QMakeEvaluator::prepareProject(const QString &inDir) @@ -1201,7 +1205,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile( initFrom(*baseEnv->evaluator); } else { - if (m_valuemapStack.at(0).isEmpty()) + if (!m_valuemapInited) loadDefaults(); } diff --git a/src/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h index 236dfca9c3c3a0e186d5108cdc3140ca63255665..014e73c979373cc5871da16294f59a6898b1005a 100644 --- a/src/shared/proparser/qmakeevaluator.h +++ b/src/shared/proparser/qmakeevaluator.h @@ -217,6 +217,7 @@ public: QString m_outputDir; int m_listCount; + bool m_valuemapInited; bool m_hostBuild; QString m_qmakespec; QString m_qmakespecFull;