summaryrefslogtreecommitdiffstats
path: root/src/linguist/shared/qmakeparser.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-02-13 15:27:22 +0100
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-12-18 14:43:34 +0000
commitfc8b0a4b91eb696531db7e92bbf2727c7e4fd76d (patch)
tree735004fa759d264608af20fbdf74f9688222d7fe /src/linguist/shared/qmakeparser.cpp
parent7e3da8045118f2e6dda9207dc244b8535afcb3fc (diff)
don't write pointless TokFuncTerminators into the stream
we are transforming "magic" function calls into other structures. past that point it's wrong to keep the function argument list terminator in the token stream. this went unnoticed, because in this context it was equivalent with the expected value list terminator (which was simply never reached). Change-Id: I3dc6719273ce9d663db867f355eba682ba6ccf2c Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> (cherry picked from qtbase/da1aaed059d8a871c7f9cef3980ed85c71df7323)
Diffstat (limited to 'src/linguist/shared/qmakeparser.cpp')
-rw-r--r--src/linguist/shared/qmakeparser.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/linguist/shared/qmakeparser.cpp b/src/linguist/shared/qmakeparser.cpp
index 24a2363d4..3d3a7a5d5 100644
--- a/src/linguist/shared/qmakeparser.cpp
+++ b/src/linguist/shared/qmakeparser.cpp
@@ -1014,10 +1014,12 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
}
flushCond(tokPtr);
putLineMarker(tokPtr);
+ --ptr;
+ Q_ASSERT(*ptr == TokFuncTerminator);
if (*uce == (TokLiteral|TokNewStr)) {
nlen = uce[1];
uc = uce + 2 + nlen;
- if (*uc == TokFuncTerminator) {
+ if (uc == ptr) {
// for(literal) (only "ever" would be legal if qmake was sane)
putTok(tokPtr, TokForLoop);
putHashStr(tokPtr, (ushort *)0, (uint)0);