mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-30 06:42:49 +02:00
Debugger: Fixes To TWatchResultData / introduced 2d0c2ea8ba
This commit is contained in:
parent
f0d0b24add
commit
683d087e36
@ -64,7 +64,8 @@ begin
|
||||
Result := ValConfig.Converter;
|
||||
if Result <> nil then
|
||||
Result.AddReference;
|
||||
end;
|
||||
end
|
||||
else
|
||||
if (ValConvList <> nil) then begin
|
||||
ValConvList.Lock;
|
||||
try
|
||||
@ -136,12 +137,16 @@ begin
|
||||
if FExtraDephtLevelItemConv = nil then
|
||||
FExtraDephtLevelItemConv := GetValConv(AnFpValue);
|
||||
CurConv := FExtraDephtLevelItemConv;
|
||||
if CurConv <> nil then
|
||||
CurConv.AddReference;
|
||||
end
|
||||
else
|
||||
if (RecurseCnt = 1) and (FLevelZeroKind = skArray) then begin
|
||||
if FLevelZeroArrayConv = nil then
|
||||
FLevelZeroArrayConv := GetValConv(AnFpValue);
|
||||
CurConv := FLevelZeroArrayConv;
|
||||
if CurConv <> nil then
|
||||
CurConv.AddReference;
|
||||
end
|
||||
else begin
|
||||
CurConv := GetValConv(AnFpValue);
|
||||
@ -149,13 +154,13 @@ begin
|
||||
|
||||
if (CurConv <> nil) then begin
|
||||
if (FMaxTotalConv <= 0) then
|
||||
CurConv := nil
|
||||
ReleaseRefAndNil(CurConv)
|
||||
else
|
||||
dec(FMaxTotalConv);
|
||||
|
||||
if FInArray then begin
|
||||
if (FCurMaxArrayConv <= 0) then
|
||||
CurConv := nil
|
||||
ReleaseRefAndNil(CurConv)
|
||||
else
|
||||
dec(FCurMaxArrayConv);
|
||||
end;
|
||||
@ -182,10 +187,7 @@ begin
|
||||
AnResData := AnResData.AddField('', dfvUnknown, []);
|
||||
end;
|
||||
finally
|
||||
if (CurConv <> FExtraDephtLevelItemConv) and
|
||||
(CurConv <> FLevelZeroArrayConv)
|
||||
then
|
||||
CurConv.ReleaseReference;
|
||||
CurConv.ReleaseReference;
|
||||
NewFpVal.ReleaseReference;
|
||||
end;
|
||||
end;
|
||||
|
@ -2297,12 +2297,14 @@ end;
|
||||
|
||||
procedure TWatchResultTypeConverted.AfterAssign(ATypeOnly: Boolean);
|
||||
begin
|
||||
inherited AfterAssign(ATypeOnly);
|
||||
if FHandler <> nil then
|
||||
FHandler.AddReference;
|
||||
end;
|
||||
|
||||
procedure TWatchResultTypeConverted.DoFree;
|
||||
begin
|
||||
inherited DoFree;
|
||||
if FHandler <> nil then
|
||||
FHandler.ReleaseReference;
|
||||
end;
|
||||
@ -4556,7 +4558,7 @@ function TGenericWatchResultDataStructWithAnchestor.MaybeUpdateProto(
|
||||
ARecurse: boolean; ASkipStorage: boolean): boolean;
|
||||
var
|
||||
AStructProtoData: TGenericWatchResultDataStructWithAnchestor absolute AProtoData;
|
||||
FieldStore: PNestedFieldsWatchResultStorage absolute AStorage;
|
||||
FieldStore: PNestedFieldsAndAnchestorWatchResultStorage absolute AStorage;
|
||||
dummy: TOverrideTemplateData;
|
||||
begin
|
||||
Result := inherited MaybeUpdateProto(AProtoData, AnOverrideTemplate, AStorage, ARecurse, ASkipStorage);
|
||||
@ -4569,7 +4571,7 @@ begin
|
||||
AStructProtoData.FType.FAnchestor := FType.FAnchestor.CreateCopy(True);
|
||||
|
||||
|
||||
assert((AStorage=nil) or (AStorage^=nil) or (AStorage^ is TNestedFieldsWatchResultStorage), 'TGenericWatchResultDataStruct.MaybeUpdateProto: (AStorage=nil) or (AStorage^=nil) or (AStorage^ is TNestedFieldsWatchResultStorage)');
|
||||
assert((AStorage=nil) or (AStorage^=nil) or (AStorage^ is TNestedFieldsAndAnchestorWatchResultStorage), 'TGenericWatchResultDataStruct.MaybeUpdateProto: (AStorage=nil) or (AStorage^=nil) or (AStorage^ is TNestedFieldsWatchResultStorage)');
|
||||
if (AStorage = nil) or (AStorage^ = nil)
|
||||
then begin
|
||||
if (ARecurse) then begin // or "if not ASkipStorage and " ??
|
||||
@ -4705,7 +4707,8 @@ constructor TWatchResultDataConverted.Create(
|
||||
AHandler: TLazDbgValueConverterIntf);
|
||||
begin
|
||||
FType.FHandler := AHandler;
|
||||
AHandler.AddReference;
|
||||
if AHandler <> nil then
|
||||
AHandler.AddReference;
|
||||
end;
|
||||
|
||||
{ TGenericWatchResultDataProc }
|
||||
|
Loading…
Reference in New Issue
Block a user