mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 05:00:07 +02:00
* 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:
parent
0fbf02d8e4
commit
e3a1461bd9
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user