Преглед изворни кода

* Applied slightly modified patch from bug ID #24110

git-svn-id: trunk@26719 -
michael пре 11 година
родитељ
комит
f59a2272d9
1 измењених фајлова са 13 додато и 3 уклоњено
  1. 13 3
      packages/fcl-db/src/base/bufdataset.pas

+ 13 - 3
packages/fcl-db/src/base/bufdataset.pas

@@ -563,6 +563,7 @@ type
     procedure ApplyUpdates; virtual; overload;
     procedure ApplyUpdates; virtual; overload;
     procedure ApplyUpdates(MaxErrors: Integer); virtual; overload;
     procedure ApplyUpdates(MaxErrors: Integer); virtual; overload;
     procedure MergeChangeLog;
     procedure MergeChangeLog;
+    Procedure ClearIndexes;
     procedure CancelUpdates; virtual;
     procedure CancelUpdates; virtual;
     destructor Destroy; override;
     destructor Destroy; override;
     function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions) : boolean; override;
     function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions) : boolean; override;
@@ -838,9 +839,7 @@ begin
   SetLength(FUpdateBuffer,0);
   SetLength(FUpdateBuffer,0);
   SetLength(FBlobBuffers,0);
   SetLength(FBlobBuffers,0);
   SetLength(FUpdateBlobBuffers,0);
   SetLength(FUpdateBlobBuffers,0);
-  For I:=0 to Length(FIndexes)-1 do
-    FreeAndNil(Findexes[I]);
-  SetLength(FIndexes,0);
+  ClearIndexes;
   FreeAndNil(FIndexDefs);
   FreeAndNil(FIndexDefs);
   inherited destroy;
   inherited destroy;
 end;
 end;
@@ -2606,6 +2605,17 @@ begin
   result := ABlobBuffer;
   result := ABlobBuffer;
 end;
 end;
 
 
+procedure TCustomBufDataset.ClearIndexes;
+var
+  i:integer;
+begin
+  CheckInactive;
+  For I:=0 to Length(FIndexes)-1 do
+    FreeAndNil(Findexes[I]);
+  SetLength(FIndexes,0);
+  FIndexesCount:=0;
+end;
+
 function TCustomBufDataset.GetNewWriteBlobBuffer : PBlobBuffer;
 function TCustomBufDataset.GetNewWriteBlobBuffer : PBlobBuffer;
 
 
 var ABlobBuffer : PBlobBuffer;
 var ABlobBuffer : PBlobBuffer;