Browse Source

* Raise exception when .locate is called on inactive TBufDataset, bug #13938 + test

git-svn-id: trunk@15231 -
joost 15 years ago
parent
commit
f493a70687
2 changed files with 19 additions and 0 deletions
  1. 1 0
      packages/fcl-db/src/base/bufdataset.pas
  2. 18 0
      packages/fcl-db/tests/testdbbasics.pas

+ 1 - 0
packages/fcl-db/src/base/bufdataset.pas

@@ -2772,6 +2772,7 @@ var CurrLinkItem    : PBufRecLinkItem;
 
 
 begin
 begin
   Result := False;
   Result := False;
+  CheckActive;
   if IsEmpty then exit;
   if IsEmpty then exit;
 
 
   // Build the DBCompare structure
   // Build the DBCompare structure

+ 18 - 0
packages/fcl-db/tests/testdbbasics.pas

@@ -115,6 +115,7 @@ type
     procedure TestRecNo;                   // bug 5061
     procedure TestRecNo;                   // bug 5061
     procedure TestSetRecNo;                // bug 6919
     procedure TestSetRecNo;                // bug 6919
     procedure TestRequired;
     procedure TestRequired;
+    procedure TestExceptionLocateClosed;    // bug 13938
     procedure TestCanModifySpecialFields;
     procedure TestCanModifySpecialFields;
   end;
   end;
 
 
@@ -496,6 +497,23 @@ begin
     end;
     end;
 end;
 end;
 
 
+procedure TTestDBBasics.TestExceptionLocateClosed;
+var passed: boolean;
+begin
+  with DBConnector.GetNDataset(15) do
+    begin
+    passed := false;
+    try
+      locate('name','TestName1',[]);
+    except on E: Exception do
+      begin
+      passed := E.classname = EDatabaseError.className
+      end;
+    end;
+    AssertTrue(passed);
+    end;
+end;
+
 
 
 procedure TTestDBBasics.SetUp;
 procedure TTestDBBasics.SetUp;
 begin
 begin