From fc63e311862a56c0ce5e4dc072c08bd5a390cd62 Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 11 Oct 2019 12:07:24 +0000 Subject: [PATCH] FpDebug: Prevent a stack overflow, recursive display of record in record constructor "TFoo.Create(a: TFoo)". Outer "AFlags" were hidden, preventing the recursion from being detected git-svn-id: trunk@62037 - --- components/fpdebug/fppascalbuilder.pas | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/fpdebug/fppascalbuilder.pas b/components/fpdebug/fppascalbuilder.pas index d4e9e4d8a2..2053f74026 100644 --- a/components/fpdebug/fppascalbuilder.pas +++ b/components/fpdebug/fppascalbuilder.pas @@ -188,7 +188,7 @@ var Result := i > 0; end; - Function MembersAsGdbText(out AText: String; WithVisibilty: Boolean; AFlags: TTypeDeclarationFlags = []): Boolean; + Function MembersAsGdbText(out AText: String; WithVisibilty: Boolean; ANewFlags: TTypeDeclarationFlags = []): Boolean; var CurVis: TDbgSymbolMemberVisibility; @@ -212,15 +212,16 @@ var begin Result := True; AText := ''; + ANewFlags := ANewFlags + AFlags; c := ADbgSymbol.NestedSymbolCount; i := 0; while (i < c) and Result do begin m := ADbgSymbol.NestedSymbol[i]; AddVisibility(m.MemberVisibility, i= 0); - if tdfStopAfterPointer in AFlags then + if tdfStopAfterPointer in ANewFlags then r := GetTypeName(s, m) else - r := GetTypeAsDeclaration(s, m, [tdfIncludeVarName, tdfStopAfterPointer] + AFlags, AnIndent + 4); + r := GetTypeAsDeclaration(s, m, [tdfIncludeVarName, tdfStopAfterPointer] + ANewFlags, AnIndent + 4); if r then AText := AText + GetIndent + s + ';' + LineEnding else