From 62c713b834cc61a61b5576f69855390a2fa29cf6 Mon Sep 17 00:00:00 2001 From: "SND\\ussrhero_cp" Date: Mon, 23 Feb 2015 14:36:09 +0000 Subject: [PATCH] [0.3.x] fixed : issue #13472 ( typedVar.fields() method raises exception ) git-svn-id: https://pykd.svn.codeplex.com/svn@89772 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/pytypedvar.cpp | 6 +++++- test/scripts/typedvar.py | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pykd/pytypedvar.cpp b/pykd/pytypedvar.cpp index 6cc3f70..0060436 100644 --- a/pykd/pytypedvar.cpp +++ b/pykd/pytypedvar.cpp @@ -75,7 +75,11 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar ) for ( size_t i = 0; i < typedVar.getElementCount(); ++i ) { std::wstring name = typedVar.getElementName(i); - kdlib::MEMOFFSET_32 offset = typedVar.getElementOffset(i); + kdlib::MEMOFFSET_32 offset = 0; + + if (!typedVar.getType()->isStaticMember(i) ) + offset = typedVar.getElementOffset(i); + kdlib::TypedVarPtr val = typedVar.getElement(i); lst.push_back( FieldTuple( name, offset, val ) ); diff --git a/test/scripts/typedvar.py b/test/scripts/typedvar.py index 4e58a66..481f7a6 100644 --- a/test/scripts/typedvar.py +++ b/test/scripts/typedvar.py @@ -325,3 +325,7 @@ class TypedVarTest( unittest.TestCase ): self.assertTrue( tv.getDebugStart() >= tv.getAddress() ) self.assertTrue( tv.getDebugEnd() <= tv.getAddress() + tv.sizeof() ) + + def testFields(self): + tv = pykd.typedVar( "g_classChild") + self.assertTrue( len(tv.fields())>0 )