瀏覽代碼

* Make the dbconnector ref-counted

git-svn-id: trunk@15388 -
joost 15 年之前
父節點
當前提交
f74bd99413

+ 1 - 0
packages/fcl-db/tests/dbtestframework.pas

@@ -47,4 +47,5 @@ begin
     FXMLResultsWriter.Free;
     FDigestResultsWriter.Free;
   end;
+  FreeDBConnector;
 end.

+ 1 - 1
packages/fcl-db/tests/testfieldtypes.pas

@@ -922,7 +922,7 @@ procedure TTestFieldTypes.TearDown;
 begin
   if assigned(DBConnector) then
     TSQLDBConnector(DBConnector).Transaction.Rollback;
-  FreeAndNil(DBConnector);
+  FreeDBConnector;
 end;
 
 procedure TTestFieldTypes.RunTest;

+ 14 - 1
packages/fcl-db/tests/toolsunit.pas

@@ -165,12 +165,15 @@ var dbtype,
 
 
 procedure InitialiseDBConnector;
+procedure FreeDBConnector;
 
 implementation
 
 uses
   inifiles;
 
+var DBConnectorRefCount: integer;
+
 constructor TDBConnector.create;
 begin
   CreateFieldDataset;
@@ -233,6 +236,7 @@ procedure InitialiseDBConnector;
 var DBConnectorClass : TPersistentClass;
     i                : integer;
 begin
+  if DBConnectorRefCount>0 then exit;
   testValues[ftString] := testStringValues;
   testValues[ftFixedChar] := testStringValues;
   for i := 0 to testValuesCount-1 do
@@ -256,6 +260,14 @@ begin
   if assigned(DBConnectorClass) then
     DBConnector := TDBConnectorClass(DBConnectorClass).create
   else Raise Exception.Create('Unknown db-connector specified');
+  inc(DBConnectorRefCount);
+end;
+
+procedure FreeDBConnector;
+begin
+  dec(DBConnectorRefCount);
+  if DBConnectorRefCount=0 then
+    FreeAndNil(DBConnector);
 end;
 
 { TTestDataLink }
@@ -340,10 +352,11 @@ end;
 
 procedure TDBBasicsTestSetup.OneTimeTearDown;
 begin
-  FreeAndNil(DBConnector);
+  FreeDBConnector;
 end;
 
 initialization
   ReadIniFile;
+  DBConnectorRefCount:=0;
 end.