From eed0241d975cca9b7934deffa6ba5ca294e598db Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Fri, 4 Jun 2010 10:14:22 +0200
Subject: [PATCH] Fixed a couple of null-checks/-returns.

---
 src/libs/cplusplus/ResolveExpression.cpp | 10 +++++-----
 src/libs/qmljs/qmljsinterpreter.cpp      |  5 +++--
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index a6b5203f233..a2475156270 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -491,8 +491,8 @@ bool ResolveExpression::visit(CallAST *ast)
                 foreach (Symbol *overload, b->find(functionCallOp)) {
                     if (Function *funTy = overload->type()->asFunctionType()) {
                         if (maybeValidPrototype(funTy, actualArgumentCount)) {
-                            Function *proto = instantiate(namedTy->name(), funTy)->asFunctionType();
-                            addResult(proto->returnType().simplified(), scope);
+                            if (Function *proto = instantiate(namedTy->name(), funTy)->asFunctionType())
+                                addResult(proto->returnType().simplified(), scope);
                         }
                     }
                 }
@@ -535,9 +535,9 @@ bool ResolveExpression::visit(ArrayAccessAST *ast)
             if (ClassOrNamespace *b = _context.lookupType(namedTy->name(), scope)) {
                 foreach (Symbol *overload, b->find(arrayAccessOp)) {
                     if (Function *funTy = overload->type()->asFunctionType()) {
-                        Function *proto = instantiate(namedTy->name(), funTy)->asFunctionType();
-                        // ### TODO: check the actual arguments
-                        addResult(proto->returnType().simplified(), scope);
+                        if (Function *proto = instantiate(namedTy->name(), funTy)->asFunctionType())
+                            // ### TODO: check the actual arguments
+                            addResult(proto->returnType().simplified(), scope);
                     }
                 }
 
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index a32cd10c9fc..29cfe1a1cca 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1469,10 +1469,11 @@ const ObjectValue *Context::lookupType(const QmlJS::Document *doc, UiQualifiedId
 const ObjectValue *Context::lookupType(const QmlJS::Document *doc, const QStringList &qmlTypeName)
 {
     const ObjectValue *objectValue = typeEnvironment(doc);
-    if (!objectValue)
-        return 0;
 
     foreach (const QString &name, qmlTypeName) {
+        if (!objectValue)
+            return 0;
+
         const Value *value = objectValue->property(name, this);
         if (!value)
             return 0;
-- 
GitLab