From be966557d46c4d23c72f0fffc0cb5a8ef9cb5616 Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 15 Oct 2019 15:34:24 +0000 Subject: [PATCH] Merged revision(s) 62037 #fc63e31186 from trunk: 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: branches/fixes_2_0@62063 - --- 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 c2e038333b..152581292b 100644 --- a/components/fpdebug/fppascalbuilder.pas +++ b/components/fpdebug/fppascalbuilder.pas @@ -164,7 +164,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; @@ -187,15 +187,16 @@ var begin Result := True; AText := ''; + ANewFlags := ANewFlags + AFlags; c := ADbgSymbol.MemberCount; i := 0; while (i < c) and Result do begin m := ADbgSymbol.Member[i]; AddVisibility(m.MemberVisibility, i= 0); - if tdfStopAfterPointer in AFlags then + if tdfStopAfterPointer in ANewFlags then Result := GetTypeName(s, m) else - Result := GetTypeAsDeclaration(s, m, [tdfIncludeVarName, tdfStopAfterPointer] + AFlags, AnIndent + 4); + Result := GetTypeAsDeclaration(s, m, [tdfIncludeVarName, tdfStopAfterPointer] + ANewFlags, AnIndent + 4); if Result then AText := AText + GetIndent + s + ';' + LineEnding; inc(i);