summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-05-17 15:16:45 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-05-24 09:38:57 +0200
commitb4c3cef863935ae94ada04a162212d40db17ec6a (patch)
tree33f1ba245aacb0040592616cb069794b73e66476 /src/libs/cplusplus/LookupContext.cpp
parent7fbcf01e40baa186982c3a717a086c9327390d3a (diff)
downloadqt-creator-b4c3cef863935ae94ada04a162212d40db17ec6a.tar.gz
C++: Fix crash for nameless using declaration
Task-number: QTCREATORBUG-9323 Change-Id: I52dfe8c03da14fc08723c3878fec0f6e9150152c Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r--src/libs/cplusplus/LookupContext.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 6b718cfbc3..086c4dc7c8 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -249,17 +249,19 @@ QList<LookupItem> LookupContext::lookupByUsing(const Name *name, Scope *scope) c
if (name->isNameId()) {
for (unsigned i = 0, count = scope->memberCount(); i < count; ++i) {
if (UsingDeclaration *u = scope->memberAt(i)->asUsingDeclaration()) {
- if (const QualifiedNameId *q = u->name()->asQualifiedNameId()) {
- if (q->name()->isEqualTo(name)) {
- candidates = bindings()->globalNamespace()->find(q);
-
- // if it is not a global scope(scope of scope is not equal 0)
- // then add current using declaration as a candidate
- if (scope->scope()) {
- LookupItem item;
- item.setDeclaration(u);
- item.setScope(scope);
- candidates.append(item);
+ if (const Name *usingDeclarationName = u->name()) {
+ if (const QualifiedNameId *q = usingDeclarationName->asQualifiedNameId()) {
+ if (q->name() && q->name()->isEqualTo(name)) {
+ candidates = bindings()->globalNamespace()->find(q);
+
+ // if it is not a global scope(scope of scope is not equal 0)
+ // then add current using declaration as a candidate
+ if (scope->scope()) {
+ LookupItem item;
+ item.setDeclaration(u);
+ item.setScope(scope);
+ candidates.append(item);
+ }
}
}
}
@@ -328,9 +330,11 @@ ClassOrNamespace *LookupContext::lookupType(const Name *name, Scope *scope,
}
} else if (UsingDeclaration *ud = m->asUsingDeclaration()) {
if (name->isNameId()) {
- if (const QualifiedNameId *q = ud->name()->asQualifiedNameId()) {
- if (q->name()->isEqualTo(name)) {
- return bindings()->globalNamespace()->lookupType(q);
+ if (const Name *usingDeclarationName = ud->name()) {
+ if (const QualifiedNameId *q = usingDeclarationName->asQualifiedNameId()) {
+ if (q->name() && q->name()->isEqualTo(name)) {
+ return bindings()->globalNamespace()->lookupType(q);
+ }
}
}