From f05e0e26586a3faed58a3243e8e4d0668d896740 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Tue, 22 May 2012 09:00:05 +0000 Subject: [PATCH] [0.1.x] fixed : VFN_TABLE for virtual base class git-svn-id: https://pykd.svn.codeplex.com/svn@76515 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/typeinfo.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 ) ); } } }