don't crash when trying to dump struct members which are NULL pointers

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-03-27 14:26:10 +00:00
parent a67f1484e0
commit 120678ee96

View File

@@ -305,6 +305,12 @@ wxDbgHelpDLL::DumpField(PSYMBOL_INFO pSym, void *pVariable, unsigned level)
break; break;
case SYMBOL_TAG_DATA: case SYMBOL_TAG_DATA:
if ( !pVariable )
{
s = _T("NULL");
}
else // valid location
{
wxDbgHelpDLL::DataKind kind; wxDbgHelpDLL::DataKind kind;
if ( !DoGetTypeInfo(pSym, TI_GET_DATAKIND, &kind) || if ( !DoGetTypeInfo(pSym, TI_GET_DATAKIND, &kind) ||
kind != DATA_MEMBER ) kind != DATA_MEMBER )
@@ -346,6 +352,7 @@ wxDbgHelpDLL::DumpField(PSYMBOL_INFO pSym, void *pVariable, unsigned level)
s = DumpUDT(&sym, pVariable, level); s = DumpUDT(&sym, pVariable, level);
break; break;
} }
}
if ( !s.empty() ) if ( !s.empty() )
{ {
@@ -458,7 +465,16 @@ wxDbgHelpDLL::DereferenceSymbol(PSYMBOL_INFO pSym, void **ppData)
// remove one level of indirection except for the char strings: we want // remove one level of indirection except for the char strings: we want
// to dump "char *" and not a single "char" for them // to dump "char *" and not a single "char" for them
if ( ppData && *ppData && GetBasicType(pSym) != BASICTYPE_CHAR ) if ( ppData && *ppData && GetBasicType(pSym) != BASICTYPE_CHAR )
*ppData = (void *)*((DWORD_PTR *)*ppData); {
DWORD_PTR *pData = (DWORD_PTR *)*ppData;
if ( ::IsBadReadPtr(pData, sizeof(DWORD_PTR *)) )
{
break;
}
*ppData = (void *)*pData;
}
} }
return tag; return tag;