diff --git a/pykd/typeinfo.cpp b/pykd/typeinfo.cpp index 1f50114..349adfa 100644 --- a/pykd/typeinfo.cpp +++ b/pykd/typeinfo.cpp @@ -615,12 +615,21 @@ void UdtTypeInfo::getFields( else if ( symTag == SymTagVTable ) { - if ( !baseVirtualSym ) - { - TypeInfoPtr ti = TypeInfo::getTypeInfo( rootSym, childSym ); + TypeInfoPtr ti = TypeInfo::getTypeInfo( rootSym, childSym ); - m_fields.push_back( std::make_pair( "__VFN_table", ti ) ); + if ( baseVirtualSym ) + { + ti->setVirtualBase( + TypeInfo::getTypeInfo(baseVirtualSym), + virtualBasePtr, + virtualDispIndex, + virtualDispSize ); + } + + ti->setOffset( startOffset + childSym->getOffset() ); + + m_fields.push_back( std::make_pair( "__VFN_table", ti ) ); } } }