mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 06:59:21 +02:00
FpDebug: fix memleak in local vars / Introduced in SetLocalProcInfo commit ead31d2c8c
This commit is contained in:
parent
b9f865d16d
commit
c3b6ede519
@ -1074,6 +1074,7 @@ DECL = DW_AT_decl_column, DW_AT_decl_file, DW_AT_decl_line
|
|||||||
function StateMachineValid: Boolean;
|
function StateMachineValid: Boolean;
|
||||||
function ReadVirtuality(out AFlags: TDbgSymbolFlags): Boolean;
|
function ReadVirtuality(out AFlags: TDbgSymbolFlags): Boolean;
|
||||||
protected
|
protected
|
||||||
|
procedure DoReferenceReleased; override;
|
||||||
function GetLineEndAddress: TDBGPtr; override;
|
function GetLineEndAddress: TDBGPtr; override;
|
||||||
function GetLineStartAddress: TDBGPtr; override;
|
function GetLineStartAddress: TDBGPtr; override;
|
||||||
function GetFrameBase(ASender: TDwarfLocationExpression): TDbgPtr;
|
function GetFrameBase(ASender: TDwarfLocationExpression): TDbgPtr;
|
||||||
@ -6869,6 +6870,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFpSymbolDwarfDataProc.DoReferenceReleased;
|
||||||
|
begin
|
||||||
|
inherited DoReferenceReleased;
|
||||||
|
if (sfiTypeInfo in EvaluatedFields) and
|
||||||
|
(RefCount = 1)
|
||||||
|
then
|
||||||
|
NilThenReleaseRef(TFpSymbolDwarfTypeProc(TypeInfo).FLastMember {$IFDEF WITH_REFCOUNT_DEBUG}, 'TFpSymbolDwarfDataProc.FLastMember'{$ENDIF});
|
||||||
|
end;
|
||||||
|
|
||||||
function TFpSymbolDwarfDataProc.GetFrameBase(ASender: TDwarfLocationExpression): TDbgPtr;
|
function TFpSymbolDwarfDataProc.GetFrameBase(ASender: TDwarfLocationExpression): TDbgPtr;
|
||||||
var
|
var
|
||||||
Val: TByteDynArray;
|
Val: TByteDynArray;
|
||||||
@ -7072,8 +7082,8 @@ begin
|
|||||||
FLastMember := TFpSymbolDwarf.CreateSubClass('', TDwarfInformationEntry(FProcMembers[AIndex]));
|
FLastMember := TFpSymbolDwarf.CreateSubClass('', TDwarfInformationEntry(FProcMembers[AIndex]));
|
||||||
{$IFDEF WITH_REFCOUNT_DEBUG}FLastMember.DbgRenameReference(@FLastMember, 'TFpSymbolDwarfDataProc.FLastMember');{$ENDIF}
|
{$IFDEF WITH_REFCOUNT_DEBUG}FLastMember.DbgRenameReference(@FLastMember, 'TFpSymbolDwarfDataProc.FLastMember');{$ENDIF}
|
||||||
Result := FLastMember;
|
Result := FLastMember;
|
||||||
if Result <> nil then
|
//if Result <> nil then
|
||||||
TFpSymbolDwarf(Result).LocalProcInfo := FProcValue;
|
// TFpSymbolDwarf(Result).LocalProcInfo := FProcValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFpSymbolDwarfTypeProc.GetNestedSymbolExByName(const AIndex: String;
|
function TFpSymbolDwarfTypeProc.GetNestedSymbolExByName(const AIndex: String;
|
||||||
@ -7096,8 +7106,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result := FLastMember;
|
Result := FLastMember;
|
||||||
if Result <> nil then
|
//if Result <> nil then
|
||||||
TFpSymbolDwarf(Result).LocalProcInfo := FProcValue;
|
// TFpSymbolDwarf(Result).LocalProcInfo := FProcValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFpSymbolDwarfTypeProc.GetNestedSymbolCount: Integer;
|
function TFpSymbolDwarfTypeProc.GetNestedSymbolCount: Integer;
|
||||||
@ -7116,7 +7126,7 @@ end;
|
|||||||
destructor TFpSymbolDwarfTypeProc.Destroy;
|
destructor TFpSymbolDwarfTypeProc.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FProcMembers);
|
FreeAndNil(FProcMembers);
|
||||||
FLastMember.ReleaseReference{$IFDEF WITH_REFCOUNT_DEBUG}(@FLastMember, 'TFpSymbolDwarfDataProc.FLastMember'){$ENDIF};
|
NilThenReleaseRef(FLastMember {$IFDEF WITH_REFCOUNT_DEBUG}, 'TFpSymbolDwarfDataProc.FLastMember'{$ENDIF});
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user