From 2ac7300f0e50d17ed65bc2fd63adc16ae6a209b8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 28 Jun 2016 13:49:02 +0200 Subject: [PATCH] QmlDesigner: Fix crash in tests In the tests we have cases with no rewriter attached. We warn in these cases. Change-Id: Ibc89ff501bf6d48ed3a2f230ee6e1afda5d4d06c Reviewed-by: Christian Stenger --- .../designercore/rewritertransaction.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp index 7dbc5463772..755b667a063 100644 --- a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp +++ b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp @@ -27,6 +27,8 @@ #include #include +#include + #ifndef QMLDESIGNER_TEST #include #include @@ -82,13 +84,22 @@ void RewriterTransaction::commit() { if (m_valid) { m_valid = false; - bool oldSemanticChecks = view()->rewriterView()->checkSemanticErrors(); - if (m_ignoreSemanticChecks) - view()->rewriterView()->setCheckSemanticErrors(false); + + RewriterView *rewriterView = view()->rewriterView(); + + QTC_ASSERT(rewriterView, qWarning() << Q_FUNC_INFO << "No rewriter attached"); + + bool oldSemanticChecks = false; + if (rewriterView) { + oldSemanticChecks = rewriterView->checkSemanticErrors(); + if (m_ignoreSemanticChecks) + rewriterView->setCheckSemanticErrors(false); + } view()->emitRewriterEndTransaction(); - view()->rewriterView()->setCheckSemanticErrors(oldSemanticChecks); + if (rewriterView) + view()->rewriterView()->setCheckSemanticErrors(oldSemanticChecks); if (m_activeIdentifier) { qDebug() << "Commit RewriterTransaction:" << m_identifier << m_identifierNumber;