summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-07-09 16:20:20 +0200
committercon <qtc-committer@nokia.com>2009-07-10 11:41:27 +0200
commitb8e7a98ada5abed6a39fc150f4742c0471472895 (patch)
tree8532c0db11fbf866771eaac82351e4524c253ad3
parent95b8f1d9c54ab60ebbd6205ff9e357cec3b2ffec (diff)
downloadqt-creator-b8e7a98ada5abed6a39fc150f4742c0471472895.tar.gz
Fixed possible crash when completing function-like arguments.
(cherry picked from commit 85c501c976e330765c392e212cf2775b563ddaea)
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp4
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index d9dcf931af..79895eb41a 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -667,7 +667,7 @@ ResolveExpression::resolveMemberExpression(const QList<Result> &baseResults,
if (NamedType *namedTy = ty->asNamedType())
results += resolveMember(p, memberName, namedTy);
else if (Function *fun = ty->asFunctionType()) {
- if (fun->scope()->isBlockScope() || fun->scope()->isNamespaceScope()) {
+ if (fun->scope() && (fun->scope()->isBlockScope() || fun->scope()->isNamespaceScope())) {
ty = fun->returnType();
if (ReferenceType *refTy = ty->asReferenceType())
@@ -881,7 +881,7 @@ QList<Symbol *> ResolveClass::resolveClass(NamedType *namedTy,
if (Function *funTy = decl->type()->asFunctionType()) {
// QString foo("ciao");
// foo.
- if (funTy->scope()->isBlockScope() || funTy->scope()->isNamespaceScope()) {
+ if (funTy->scope() && (funTy->scope()->isBlockScope() || funTy->scope()->isNamespaceScope())) {
const ResolveExpression::Result r(funTy->returnType(), decl);
resolvedSymbols += resolveClass(r, context);
}
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index bf8c580d0a..b0ae27c55a 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -932,7 +932,7 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
namedTy = ty->asNamedType();
if (! namedTy) {
Function *fun = ty->asFunctionType();
- if (fun && (fun->scope()->isBlockScope() || fun->scope()->isNamespaceScope()))
+ if (fun && fun->scope() && (fun->scope()->isBlockScope() || fun->scope()->isNamespaceScope()))
namedTy = fun->returnType()->asNamedType();
}
}