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