Selaa lähdekoodia

* Fixed AV when TFieldDefs has dataset assigned. (+test)

git-svn-id: trunk@12567 -
joost 16 vuotta sitten
vanhempi
commit
7613f3eb5f
2 muutettua tiedostoa jossa 15 lisäystä ja 1 poistoa
  1. 6 1
      packages/fcl-db/src/base/db.pas
  2. 9 0
      packages/fcl-db/tests/testbasics.pas

+ 6 - 1
packages/fcl-db/src/base/db.pas

@@ -2042,7 +2042,12 @@ procedure TDefCollection.SetItemName(AItem: TCollectionItem);
 begin
   with AItem as TNamedItem do
     if Name = '' then
-      Name := Dataset.Name + Copy(ClassName, 2, 5) + IntToStr(ID+1)
+      begin
+      if assigned(Dataset) then
+        Name := Dataset.Name + Copy(ClassName, 2, 5) + IntToStr(ID+1)
+      else
+        Name := Copy(ClassName, 2, 5) + IntToStr(ID+1);
+      end
   else inherited SetItemName(AItem);
 end;
 

+ 9 - 0
packages/fcl-db/tests/testbasics.pas

@@ -21,6 +21,7 @@ type
     procedure TestParseSQL;
     procedure TestInitFielddefsFromFields;
     procedure TestDoubleFieldDef;
+    procedure TestFieldDefWithoutDS;
   end;
 
 implementation
@@ -170,6 +171,14 @@ begin
   AssertTrue(PassException);
 end;
 
+procedure TTestBasics.TestFieldDefWithoutDS;
+var FieldDefs : TFieldDefs;
+begin
+  FieldDefs := TFieldDefs.Create(nil);
+  FieldDefs.Add('test',ftString);
+  FieldDefs.Free;
+end;
+
 initialization
   RegisterTest(TTestBasics);
 end.