summaryrefslogtreecommitdiff
path: root/plugins/msvc_rtti/rtti.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/msvc_rtti/rtti.cpp')
-rw-r--r--plugins/msvc_rtti/rtti.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/msvc_rtti/rtti.cpp b/plugins/msvc_rtti/rtti.cpp
index f1d172a1..07a33d61 100644
--- a/plugins/msvc_rtti/rtti.cpp
+++ b/plugins/msvc_rtti/rtti.cpp
@@ -6,6 +6,7 @@ constexpr int COL_SIG_REV0 = 0;
constexpr int COL_SIG_REV1 = 1;
constexpr int RTTI_CONFIDENCE = 100;
+constexpr int BCD_HASPCHD = 0x40;
ClassHierarchyDescriptor::ClassHierarchyDescriptor(BinaryView *view, uint64_t address)
{
@@ -503,8 +504,10 @@ std::optional<ClassInfo> MicrosoftRTTIProcessor::ProcessRTTI(uint64_t coLocatorA
m_view->DefineDataVariable(baseClassTypeDescAddr,
Confidence(TypeDescriptorType(m_view, baseClassTypeDesc.name.length()), RTTI_CONFIDENCE));
- auto classHierarchyDescAddr = resolveAddr(baseClassDesc.pClassHierarchyDescriptor);
- baseClasses[classHierarchyDescAddr] = baseClassInfo;
+ if (baseClassDesc.attributes & BCD_HASPCHD) {
+ auto classHierarchyDescAddr = resolveAddr(baseClassDesc.pClassHierarchyDescriptor);
+ baseClasses[classHierarchyDescAddr] = baseClassInfo;
+ }
}
return baseClasses;