aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlformat
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2020-01-08 13:51:59 +0100
committerMaximilian Goldstein <max.goldstein@qt.io>2020-01-09 09:16:42 +0100
commit3e92cd7391855ff7189a3802db1e9fcc5e96ed13 (patch)
treedd9f70ee49a3a80e2c3df2f71a6f5c90df1689c9 /tools/qmlformat
parent653c25d48298fb747cf6f3b012816855c51d4260 (diff)
qmlformat/dumpastvisitor: Fix a few segfaults
Change-Id: Ic8e95944cf36000a004d010293a532101433c3af Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tools/qmlformat')
-rw-r--r--tools/qmlformat/dumpastvisitor.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/qmlformat/dumpastvisitor.cpp b/tools/qmlformat/dumpastvisitor.cpp
index 1ab09e463b..716be0a9a7 100644
--- a/tools/qmlformat/dumpastvisitor.cpp
+++ b/tools/qmlformat/dumpastvisitor.cpp
@@ -436,7 +436,7 @@ QString DumpAstVisitor::parseExportsList(ExportsList *list)
QString DumpAstVisitor::parseBlock(Block *block, bool hasNext, bool allowBraceless)
{
- bool hasOneLine = block->statements->next == nullptr && allowBraceless;
+ bool hasOneLine = (block->statements == nullptr || block->statements->next == nullptr) && allowBraceless;
QString result = hasOneLine ? "\n" : "{\n";
m_indentLevel++;
@@ -449,7 +449,7 @@ QString DumpAstVisitor::parseBlock(Block *block, bool hasNext, bool allowBracele
if (!hasNext && !hasOneLine)
result += formatLine("}", false);
- m_blockNeededBraces |= (block->statements->next != nullptr);
+ m_blockNeededBraces |= (block->statements && block->statements->next != nullptr);
return result;
}
@@ -554,7 +554,12 @@ QString DumpAstVisitor::parseStatement(Statement *statement, bool blockHasNext,
QString result = "for (";
- result += parsePatternElement(cast<PatternElement *>(forEachStatement->lhs));
+ PatternElement *patternElement = cast<PatternElement *>(forEachStatement->lhs);
+
+ if (patternElement != nullptr)
+ result += parsePatternElement(patternElement);
+ else
+ result += parseExpression(forEachStatement->lhs->expressionCast());
switch (forEachStatement->type)
{