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