From d85dcb1390b1b237f995be893d506d2addec4f75 Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 5 Oct 2011 22:04:38 +0000 Subject: [PATCH] DBG: improved type-info parsing. (prepare for gw3) git-svn-id: trunk@32707 - --- debugger/gdbtypeinfo.pp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/debugger/gdbtypeinfo.pp b/debugger/gdbtypeinfo.pp index d7cbdec80f..ffac9f93ec 100644 --- a/debugger/gdbtypeinfo.pp +++ b/debugger/gdbtypeinfo.pp @@ -1397,15 +1397,19 @@ var FProcessState := gtpsArray; PTypeResult := FReqResults[gptrPTypeExpr].Result; + // In DWARF, some Dynamic Array, are pointer to there base type if (ptprfPointer in PTypeResult.Flags) and (PTypeResult.Kind =ptprkSimple) then begin if not RequireRequests([gptrPTypeExprDeRef]) then exit; if (not IsReqError(gptrPTypeExprDeRef)) then - PTypeResult := FReqResults[gptrPTypeExprDeRef].Result + PTypeResult := FReqResults[gptrPTypeExprDeRef].Result; + // This implies it is an internal pointer + if (ptprfDynArray in PTypeResult.Flags) + then include(FAttributes, saInternalPointer); end; - if (ptprfDynArray in PTypeResult.Flags) + if (PTypeResult.Flags * [ptprfDynArray, ptprfPointer] = [ptprfDynArray, ptprfPointer]) then include(FAttributes, saInternalPointer); if (saInternalPointer in FAttributes) then begin