summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-09-05 22:07:39 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-09-06 11:55:58 +0200
commit889f16c345f89fdbaa25a083e57615ef103c3b74 (patch)
tree2a32c14a324ffc7bf58ce2e6640a368a70f2c052 /src/shared
parent99cfa88b90e0fb911689a6541d17a3e2326816a6 (diff)
downloadqt-creator-889f16c345f89fdbaa25a083e57615ef103c3b74.tar.gz
fix crash when modifiying some project files with scopes
TokBranch may hold zero-sized blocks, which must be explicitly handled before trying to enter them. Task-number: QTCREATORBUG-7706 Change-Id: Idaa129e12eb89cbc9572277083765fa6e15e0849 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/proparser/prowriter.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/shared/proparser/prowriter.cpp b/src/shared/proparser/prowriter.cpp
index 6a6b6f0678..e70740efd9 100644
--- a/src/shared/proparser/prowriter.cpp
+++ b/src/shared/proparser/prowriter.cpp
@@ -325,11 +325,15 @@ static void findProVariables(const ushort *tokPtr, const QStringList &vars,
while (ushort tok = *tokPtr++) {
if (tok == TokBranch) {
uint blockLen = getBlockLen(tokPtr);
- findProVariables(tokPtr, vars, proVars, lineNo);
- tokPtr += blockLen;
+ if (blockLen) {
+ findProVariables(tokPtr, vars, proVars, lineNo);
+ tokPtr += blockLen;
+ }
blockLen = getBlockLen(tokPtr);
- findProVariables(tokPtr, vars, proVars, lineNo);
- tokPtr += blockLen;
+ if (blockLen) {
+ findProVariables(tokPtr, vars, proVars, lineNo);
+ tokPtr += blockLen;
+ }
} else if (tok == TokAssign || tok == TokAppend || tok == TokAppendUnique) {
if (getLiteral(lastXpr, tokPtr - 1, tmp) && vars.contains(tmp))
*proVars << lineNo;