From 32bb7bffc052ea33925c58870a5f0f7333752e5a Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Mon, 30 Aug 2010 13:31:50 +0200
Subject: [PATCH] QmlJS: Add missing null checks before using
 scopeChain().qmlTypes.

---
 src/libs/qmljs/qmljscheck.cpp                                  | 3 ++-
 .../qmldesigner/designercore/model/texttomodelmerger.cpp       | 3 ++-
 src/plugins/qmljseditor/qmljscodecompletion.cpp                | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 147852fe325..ae6ed1b3354 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -309,7 +309,8 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
     bool isAttachedProperty = false;
     if (! propertyName.isEmpty() && propertyName[0].isUpper()) {
         isAttachedProperty = true;
-        scopeObjects += _context.scopeChain().qmlTypes;
+        if (const ObjectValue *qmlTypes = _context.scopeChain().qmlTypes)
+            scopeObjects += qmlTypes;
     }
 
     if (scopeObjects.isEmpty())
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 97184c97925..59b15222018 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -256,7 +256,8 @@ public:
         bool isAttachedProperty = false;
         if (! propertyName.isEmpty() && propertyName[0].isUpper()) {
             isAttachedProperty = true;
-            scopeObjects += m_context->scopeChain().qmlTypes;
+            if (const Interpreter::ObjectValue *qmlTypes = m_context->scopeChain().qmlTypes)
+                scopeObjects += qmlTypes;
         }
 
         if (scopeObjects.isEmpty())
diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp
index c85d3e44b3f..423e8253175 100644
--- a/src/plugins/qmljseditor/qmljscodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp
@@ -730,7 +730,8 @@ int CodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
             m_completions.append(idPropertyCompletion);
 
             addCompletionsPropertyLhs(enumerateProperties(qmlScopeType), symbolIcon, PropertyOrder);
-            addCompletions(enumerateProperties(context->scopeChain().qmlTypes), symbolIcon, TypeOrder);
+            if (const Interpreter::ObjectValue *qmlTypes = context->scopeChain().qmlTypes)
+                addCompletions(enumerateProperties(qmlTypes), symbolIcon, TypeOrder);
 
             if (ScopeBuilder::isPropertyChangesObject(context, qmlScopeType)
                     && context->scopeChain().qmlScopeObjects.size() == 2) {
-- 
GitLab