summaryrefslogtreecommitdiff
path: root/src/shared/proparser/qmakebuiltins.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-08-27 15:03:48 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-09-03 19:41:06 +0200
commit3c740066b703d4b15a35fcb942b90ceb9d7cbdfd (patch)
tree8ce032cb2746e6efd01f5b12e344783812af6aca /src/shared/proparser/qmakebuiltins.cpp
parentc17c479bb92bd686df7ac27a81d5ff42103c5a91 (diff)
downloadqt-creator-3c740066b703d4b15a35fcb942b90ceb9d7cbdfd.tar.gz
avoid indexed access to elements of the value map stack
this makes us independent from the random access performance of the underlying container. Change-Id: I0e655320ad607ac43ef6797e52e6179570c155f4 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'src/shared/proparser/qmakebuiltins.cpp')
-rw-r--r--src/shared/proparser/qmakebuiltins.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp
index 834a972693..869aafc96a 100644
--- a/src/shared/proparser/qmakebuiltins.cpp
+++ b/src/shared/proparser/qmakebuiltins.cpp
@@ -1089,18 +1089,19 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
return ReturnFalse;
}
const ProKey &var = map(args.at(0));
- for (int i = m_valuemapStack.size(); --i > 0; ) {
- ProValueMap::Iterator it = m_valuemapStack[i].find(var);
- if (it != m_valuemapStack.at(i).end()) {
+ for (ProValueMapStack::Iterator vmi = m_valuemapStack.end();
+ --vmi != m_valuemapStack.begin(); ) {
+ ProValueMap::Iterator it = (*vmi).find(var);
+ if (it != (*vmi).end()) {
if (it->constBegin() == statics.fakeValue.constBegin()) {
// This is stupid, but qmake doesn't propagate deletions
- m_valuemapStack[0][var] = ProStringList();
+ m_valuemapStack.first()[var] = ProStringList();
} else {
- m_valuemapStack[0][var] = *it;
+ m_valuemapStack.first()[var] = *it;
}
- m_valuemapStack[i].erase(it);
- while (--i)
- m_valuemapStack[i].remove(var);
+ (*vmi).erase(it);
+ while (--vmi != m_valuemapStack.begin())
+ (*vmi).remove(var);
break;
}
}