mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.2.x] fixed : issue #12776 ( typeInfo raises exception for templates with pointers )
git-svn-id: https://pykd.svn.codeplex.com/svn@87374 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
5d16b1ca49
commit
8dd29afb06
@ -2,7 +2,7 @@
|
|||||||
#define PYKD_VERSION_MAJOR 0
|
#define PYKD_VERSION_MAJOR 0
|
||||||
#define PYKD_VERSION_MINOR 2
|
#define PYKD_VERSION_MINOR 2
|
||||||
#define PYKD_VERSION_SUBVERSION 0
|
#define PYKD_VERSION_SUBVERSION 0
|
||||||
#define PYKD_VERSION_BUILDNO 28
|
#define PYKD_VERSION_BUILDNO 29
|
||||||
|
|
||||||
|
|
||||||
#define __VER_STR2__(x) #x
|
#define __VER_STR2__(x) #x
|
||||||
|
@ -215,16 +215,21 @@ BaseTypeVariant TypeInfo::getValue()
|
|||||||
|
|
||||||
TypeInfoPtr TypeInfo::getTypeInfo( SymbolPtr &symScope, const std::string &symName )
|
TypeInfoPtr TypeInfo::getTypeInfo( SymbolPtr &symScope, const std::string &symName )
|
||||||
{
|
{
|
||||||
size_t pos = symName.find_first_of( "*[" );
|
TypeInfoPtr basePtr = getBaseTypeInfo( symName, getTypePointerSize(symScope) );
|
||||||
|
if ( basePtr != 0 )
|
||||||
|
return basePtr;
|
||||||
|
|
||||||
if ( pos == std::string::npos )
|
SymbolPtr symType;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
symType = symScope->getChildByName( symName );
|
||||||
|
|
||||||
|
}catch(SymbolException&)
|
||||||
|
{}
|
||||||
|
|
||||||
|
if ( symType )
|
||||||
{
|
{
|
||||||
TypeInfoPtr basePtr = getBaseTypeInfo( symName, getTypePointerSize(symScope) );
|
|
||||||
if ( basePtr != 0 )
|
|
||||||
return basePtr;
|
|
||||||
|
|
||||||
SymbolPtr symType = symScope->getChildByName( symName );
|
|
||||||
|
|
||||||
if ( symType->getSymTag() == SymTagData )
|
if ( symType->getSymTag() == SymTagData )
|
||||||
{
|
{
|
||||||
if ( symType->getLocType() == LocIsBitField )
|
if ( symType->getLocType() == LocIsBitField )
|
||||||
@ -247,7 +252,12 @@ TypeInfoPtr TypeInfo::getTypeInfo( SymbolPtr &symScope, const std::string &symN
|
|||||||
return getTypeInfo( symType );
|
return getTypeInfo( symType );
|
||||||
}
|
}
|
||||||
|
|
||||||
return getComplexType( symScope, symName );
|
size_t pos = symName.find_first_of( "*[" );
|
||||||
|
|
||||||
|
if ( pos != std::string::npos )
|
||||||
|
return getComplexType( symScope, symName );
|
||||||
|
|
||||||
|
throw TypeException( symName, "symbol name is not found" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user