浏览代码

* Fix never-ending loop when setting filter

michael 5 年之前
父节点
当前提交
816d7bd3e1
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      packages/fcl-db/jsondataset.pas

+ 7 - 1
packages/fcl-db/jsondataset.pas

@@ -1333,7 +1333,7 @@ begin
         else
           Result := grBOF; // begin of file
       gmCurrent: // check if empty
-        if fCurrent >= fCurrentIndex.Count then
+        if (FCurrent<0) or (fCurrent >= fCurrentIndex.Count) then
           Result := grEOF;
     end;
     if Result = grOK then // read the data
@@ -1347,6 +1347,12 @@ begin
         begin
         FFilterRow:=Buffer.Data;
         recordAccepted:=DoFilterRecord;
+        if Not RecordAccepted and (GetMode=gmCurrent) then
+          begin
+          // Transform to EOF.
+          RecordAccepted:=True;
+          Result:=grEOF;
+          end;
         end;
       end;
   until recordAccepted;