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;