Browse Source

* Fix for destroying nested datasets, patch by Henrique Werlang (issue 38749)

michael 4 years ago
parent
commit
6ea1e42c5c
1 changed files with 14 additions and 5 deletions
  1. 14 5
      packages/fcl-db/db.pas

+ 14 - 5
packages/fcl-db/db.pas

@@ -736,6 +736,8 @@ type
     procedure Bind(Binding: Boolean); override;
     procedure Bind(Binding: Boolean); override;
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
+
+    destructor Destroy; override;
   end;
   end;
 
 
 { TIndexDef }
 { TIndexDef }
@@ -2371,6 +2373,9 @@ var
 
 
 begin
 begin
   Active:=False;
   Active:=False;
+
+  SetDataSetField(nil);
+
   FFieldDefs.Free;
   FFieldDefs.Free;
   FFieldList.Free;
   FFieldList.Free;
   FNestedDataSets.Free;
   FNestedDataSets.Free;
@@ -9120,14 +9125,18 @@ begin
     if Assigned(DataSet) then
     if Assigned(DataSet) then
       DataSet.NestedDataSets.Remove(FNestedDataSet);
       DataSet.NestedDataSets.Remove(FNestedDataSet);
   end;
   end;
+
   if Assigned(Value) then
   if Assigned(Value) then
-  begin
     DataSet.NestedDataSets.Add(Value);
     DataSet.NestedDataSets.Add(Value);
-    FFields := Value.Fields;
-  end
-  else
-    FFields := nil;
+
   FNestedDataSet := Value;
   FNestedDataSet := Value;
 end;
 end;
 
 
+destructor TDataSetField.Destroy;
+begin
+  AssignNestedDataSet(nil);
+
+  inherited;
+end;
+
 end.
 end.