|
@@ -1899,7 +1899,9 @@ var i : Integer;
|
|
StartInd : Integer;
|
|
StartInd : Integer;
|
|
RemRec : pointer;
|
|
RemRec : pointer;
|
|
RemRecBookmrk : TBufBookmark;
|
|
RemRecBookmrk : TBufBookmark;
|
|
|
|
+ free_rec: Boolean;
|
|
begin
|
|
begin
|
|
|
|
+ free_rec := False;
|
|
InternalSetToRecord(ActiveBuffer);
|
|
InternalSetToRecord(ActiveBuffer);
|
|
// Remove the record from all active indexes
|
|
// Remove the record from all active indexes
|
|
FCurrentIndex.StoreCurrentRecIntoBookmark(@RemRecBookmrk);
|
|
FCurrentIndex.StoreCurrentRecIntoBookmark(@RemRecBookmrk);
|
|
@@ -1921,11 +1923,13 @@ begin
|
|
begin
|
|
begin
|
|
if FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind <> ukModify then
|
|
if FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind <> ukModify then
|
|
FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil; //this 'disables' the updatebuffer
|
|
FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil; //this 'disables' the updatebuffer
|
|
|
|
+ free_rec := FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind = ukInsert; // mantis #18004
|
|
end;
|
|
end;
|
|
FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].NextBookmarkData);
|
|
FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].NextBookmarkData);
|
|
FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData := RemRecBookmrk;
|
|
FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData := RemRecBookmrk;
|
|
FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukDelete;
|
|
FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukDelete;
|
|
-
|
|
|
|
|
|
+ if free_rec then
|
|
|
|
+ FreeRecordBuffer(TRecordBuffer(RemRecBookmrk.BookmarkData));
|
|
dec(FBRecordCount);
|
|
dec(FBRecordCount);
|
|
end;
|
|
end;
|
|
|
|
|