From f3767148c0c3464d8d92f70fa80b203a8b01a428 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 6 Apr 2009 16:48:43 +0200 Subject: [PATCH] Fixed: Possible crash when resolving fully qualified name ids. Task: 249227 --- src/libs/cplusplus/LookupContext.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 64f6bc1e012..f5a0edd66bc 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -223,14 +223,13 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible continue; if (q->nameCount() > 1) { - Name *classOrNamespaceName = 0; - - if (q->nameCount() == 1) - classOrNamespaceName = q->nameAt(0); - else - classOrNamespaceName = control()->qualifiedNameId(q->names(), - q->nameCount() - 1); + Name *classOrNamespaceName = control()->qualifiedNameId(q->names(), + q->nameCount() - 1); + if (Identifier *classOrNamespaceNameId = identifier(classOrNamespaceName)) { + if (classOrNamespaceNameId->isEqualTo(id)) + continue; + } const QList<Symbol *> resolvedClassOrNamespace = resolveClassOrNamespace(classOrNamespaceName, visibleScopes); @@ -455,7 +454,7 @@ void LookupContext::expandFunction(Scope *scope, expandedScopes->append(function->arguments()); if (QualifiedNameId *q = function->name()->asQualifiedNameId()) { Name *nestedNameSpec = 0; - if (q->nameCount() == 1 && q->isGlobal()) + if (q->nameCount() == 1) nestedNameSpec = q->nameAt(0); else nestedNameSpec = control()->qualifiedNameId(q->names(), q->nameCount() - 1, -- GitLab