diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-08-27 15:03:48 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2012-09-03 19:41:06 +0200 |
commit | 3c740066b703d4b15a35fcb942b90ceb9d7cbdfd (patch) | |
tree | 8ce032cb2746e6efd01f5b12e344783812af6aca /src/shared/proparser/qmakebuiltins.cpp | |
parent | c17c479bb92bd686df7ac27a81d5ff42103c5a91 (diff) | |
download | qt-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.cpp | 17 |
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; } } |