* Merging revisions 43143 from trunk:

------------------------------------------------------------------------
    r43143 | michael | 2019-10-06 15:11:17 +0200 (Sun, 06 Oct 2019) | 1 line
    
    * Fix bug #0030379: detect circular refences
    ------------------------------------------------------------------------

git-svn-id: branches/fixes_3_2@43248 -
This commit is contained in:
michael 2019-10-19 14:44:24 +00:00
parent 0fbf02d8e4
commit e3a1461bd9
2 changed files with 15 additions and 2 deletions

View File

@ -559,10 +559,21 @@ begin
end;
Function TDataSource.IsLinkedTo(ADataSet: TDataSet): Boolean;
Function TDataSource.IsLinkedTo(ADataset: TDataSet): Boolean;
var
DS: TDataSource;
begin
Result:=False;
Repeat
DS:=aDataset.GetDataSource;
Result:=(DS=Self);
if Assigned(DS) then
aDataSet := DS.DataSet
else
aDataSet := Nil;
Until Result or (aDataset=Nil)
end;
@ -615,6 +626,8 @@ begin
End;
If ADataset<>Nil Then
begin
if IsLinkedTo(aDataset) then
DatabaseError(SErrCircularDataSourceReferenceNotAllowed,Self);
FDataSet:=ADataset;
ADataset.RegisterDatasource(Self);
ProcessEvent(deUpdateState,0);

View File

@ -1921,7 +1921,7 @@ type
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Edit;
function IsLinkedTo(ADataSet: TDataSet): Boolean;
function IsLinkedTo(ADataset: TDataSet): Boolean;
property State: TDataSetState read FState;
published
property AutoEdit: Boolean read FAutoEdit write FAutoEdit default True;