Browse Source

* If the deleted record is the first record in the index, delete it properly

git-svn-id: trunk@10165 -
joost 17 years ago
parent
commit
91447b85e3
1 changed files with 8 additions and 2 deletions
  1. 8 2
      packages/fcl-db/src/base/bufdataset.pas

+ 8 - 2
packages/fcl-db/src/base/bufdataset.pas

@@ -1766,7 +1766,10 @@ begin
       begin
       // Remove record from index
       PBufRecLinkItem(CurrBuff)[IndNr].next[IndNr].prior := PBufRecLinkItem(CurrBuff)[IndNr].prior;
-      PBufRecLinkItem(CurrBuff)[IndNr].prior[IndNr].next := PBufRecLinkItem(CurrBuff)[IndNr].next;
+      if assigned(PBufRecLinkItem(CurrBuff)[IndNr].prior) then
+        PBufRecLinkItem(CurrBuff)[IndNr].prior[IndNr].next := PBufRecLinkItem(CurrBuff)[IndNr].next
+      else
+        FIndexes[i].FFirstRecBuf := PBufRecLinkItem(CurrBuff)[IndNr].next;
       // iterate to new position
       tmpRecBuffer:=PBufRecLinkItem(CurrBuff)[IndNr].prior;
       while assigned(tmpRecBuffer[IndNr].prior) and
@@ -1786,7 +1789,10 @@ begin
       begin
       // Remove record from index
       PBufRecLinkItem(CurrBuff)[IndNr].next[IndNr].prior := PBufRecLinkItem(CurrBuff)[IndNr].prior;
-      PBufRecLinkItem(CurrBuff)[IndNr].prior[IndNr].next := PBufRecLinkItem(CurrBuff)[IndNr].next;
+      if assigned(PBufRecLinkItem(CurrBuff)[IndNr].prior) then
+        PBufRecLinkItem(CurrBuff)[IndNr].prior[IndNr].next := PBufRecLinkItem(CurrBuff)[IndNr].next
+      else
+        FIndexes[i].FFirstRecBuf := PBufRecLinkItem(CurrBuff)[IndNr].next;
       // iterate to new position
       tmpRecBuffer:=PBufRecLinkItem(CurrBuff)[IndNr].next;
       while (tmpRecBuffer[IndNr].next<>FIndexes[i].FLastRecBuf) and