C++: Fix endless recursion in base template lookup

When the template and base template are actually the same.

Task-number: QTCREATORBUG-7830
Change-Id: Ibf8ab5f5ee8da544ec768a078bd272500d2dc604
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
This commit is contained in:
Leandro Melo
2012-09-11 11:19:57 +02:00
committed by hjk
parent 6253af47f6
commit 845886852b

View File

@@ -769,8 +769,11 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac
// Qualified names in general.
// Ex.: template <class T> class A : public B<T>::Type {};
ClassOrNamespace *binding = this;
if (const Name *qualification = qBaseName->base())
binding = lookupType(qualification);
if (const Name *qualification = qBaseName->base()) {
const TemplateNameId *baseTemplName = qualification->asTemplateNameId();
if (!baseTemplName || !compareName(baseTemplName, templ->name()))
binding = lookupType(qualification);
}
baseName = qBaseName->name();
if (binding)