From aceeea96648c5651534d80409f936f26ca6f67cb Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 28 Oct 2009 11:51:04 +0100
Subject: [PATCH] Mark the bindings when searching for class or namespaces.

---
 src/libs/cplusplus/CppBindings.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp
index 1eb11b31273..acbeb6f6fd1 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;
     }
-- 
GitLab