Infinite recursion causing a crash in Type.cpp

I’ve got a case where functions in source/Symbol/Type.cpp are calling each other recursively, and it’s blowing the stack.

SymbolFileDWARF::ParseType calls GetClangForwardType():

ClangASTType array_element_type = element_type->GetClangForwardType();

Type::GetClangForwardType() calls ResolveClangType():

ClangASTType

Type::GetClangForwardType ()

{

ResolveClangType (eResolveStateForward);

return m_clang_type;

}

Type::ResolveClangType() calls GetName():

case eEncodingIsTypedefUID:

m_clang_type = encoding_type->GetClangForwardType().CreateTypedefType (GetName().AsCString(),

GetSymbolFile()->GetClangDeclContextContainingTypeUID(GetID()));

m_name.Clear();

break;

Type::GetName() calls GetClangForwardType();

const ConstString &

Type::GetName()

{

if (!m_name)

m_name = GetClangForwardType().GetConstTypeName();

return m_name;

}

And we go on and on, GetClangForwardType() → ResolveClangType() → GetName() → GetClangForwardType()->… .

Any thoughts on how to fix this?

Ted