summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-02-09 20:59:39 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-02-09 20:59:39 +0100
commit0a9a67cf547701a278f19dbe2b9fb0a70a36cdb8 (patch)
tree0230503d31cd8f3a362b2c43038385b428201d85 /src/plugins/cpptools/cppcodecompletion.cpp
parent0d1624d4d1d5ce4e350476fbc86a361fad2ef6b8 (diff)
downloadqt-creator-0a9a67cf547701a278f19dbe2b9fb0a70a36cdb8.tar.gz
Fixes: Possible crash when completing constructors.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 8988fe1236..aef68ee6d3 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -896,7 +896,10 @@ bool CppCodeCompletion::completeConstructors(Class *klass)
for (unsigned i = 0; i < klass->memberCount(); ++i) {
Symbol *member = klass->memberAt(i);
- if (! member->type()->isFunctionType())
+ FullySpecifiedType memberTy = member->type();
+ if (! memberTy)
+ continue;
+ else if (! memberTy->isFunctionType())
continue;
else if (! member->identity())
continue;
@@ -930,8 +933,12 @@ bool CppCodeCompletion::completeQtMethod(CPlusPlus::FullySpecifiedType,
QSet<QString> signatures;
foreach (TypeOfExpression::Result p, results) {
FullySpecifiedType ty = p.first;
+ if (! ty)
+ continue;
+
if (ReferenceType *refTy = ty->asReferenceType())
ty = refTy->elementType();
+
if (PointerType *ptrTy = ty->asPointerType())
ty = ptrTy->elementType();
else