diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp index 1eb11b312733247ab07a6c09027108284c41b97f..acbeb6f6fd114a5a2a965d4cbc4c9d4945fe3ca6 100644 --- a/src/libs/cplusplus/CppBindings.cpp +++ b/src/libs/cplusplus/CppBindings.cpp @@ -404,6 +404,11 @@ Binding *ClassBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Binding if (id->isEqualTo(identifier())) return this; + if (processed->contains(this)) + return 0; + + processed->insert(this); + foreach (ClassBinding *nestedClassBinding, children) { if (id->isEqualTo(nestedClassBinding->identifier())) return nestedClassBinding; @@ -412,6 +417,7 @@ Binding *ClassBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Binding foreach (ClassBinding *baseClassBinding, baseClassBindings) { if (! baseClassBinding) continue; + else if (Binding *b = baseClassBinding->findClassOrNamespaceBinding(id, processed)) return b; }