mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-01 23:19:39 +01:00
FPDebug: fix re-using array data member object
git-svn-id: trunk@44240 -
This commit is contained in:
parent
818e37a4d3
commit
c8c11be08b
@ -1916,13 +1916,19 @@ end;
|
||||
function TDbgDwarfArraySymbolValue.GetMemberEx(AIndex: array of Int64): TDbgSymbolValue;
|
||||
var
|
||||
Addr: TFpDbgMemLocation;
|
||||
i: Integer;
|
||||
begin
|
||||
Result := nil;
|
||||
assert((FOwner is TDbgDwarfIdentifierArray) and (FOwner.Kind = skArray));
|
||||
Addr := TDbgDwarfIdentifierArray(FOwner).GetMemberAddress(Self, AIndex);
|
||||
if not IsReadableLoc(Addr) then exit;
|
||||
|
||||
if (FAddrObj = nil) or (FAddrObj.RefCount > 1) then begin
|
||||
// FAddrObj.RefCount: hold by self
|
||||
i := 1;
|
||||
// FAddrObj.RefCount: hold by FResVal (ignore only, if FResVAl is not hold by others)
|
||||
if (FResVal <> nil) and (FResVal.RefCount = 1) then
|
||||
i := 2;
|
||||
if (FAddrObj = nil) or (FAddrObj.RefCount > i) then begin
|
||||
FAddrObj.ReleaseReference{$IFDEF WITH_REFCOUNT_DEBUG}(@FAddrObj, 'TDbgDwarfArraySymbolValue'){$ENDIF};
|
||||
FAddrObj := TDbgDwarfSymbolValueConstAddress.Create(Addr);
|
||||
{$IFDEF WITH_REFCOUNT_DEBUG}FAddrObj.DbgRenameReference(@FAddrObj, 'TDbgDwarfArraySymbolValue');{$ENDIF}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user