|
From: <tw...@us...> - 2026-03-07 17:15:36
|
Revision: 865
http://sourceforge.net/p/tdbf/code/865
Author: twm
Date: 2026-03-07 17:15:35 +0000 (Sat, 07 Mar 2026)
Log Message:
-----------
Fix memory leak in TCachedFile.PageDeleted on write failure
Wrap WriteRecord call in try/finally so that FreeMem is always called
even if WriteRecord raises an exception, preventing a memory leak of
the cached page data.
Modified Paths:
--------------
trunk/src/dbf_pgcfile.pas
Modified: trunk/src/dbf_pgcfile.pas
===================================================================
--- trunk/src/dbf_pgcfile.pas 2026-03-07 16:59:41 UTC (rev 864)
+++ trunk/src/dbf_pgcfile.pas 2026-03-07 17:15:35 UTC (rev 865)
@@ -140,12 +140,14 @@
procedure TCachedFile.PageDeleted(Sender: TAvlTree; Data: PData);
begin
- // data modified? write to disk
- if PPageInfo(Data^.ExtraData)^.Modified then
- inherited WriteRecord(Data^.ID, @PPageInfo(Data^.ExtraData)^.Data);
-
- // free cached page mem
- FreeMem(Data^.ExtraData);
+ try
+ // data modified? write to disk
+ if PPageInfo(Data^.ExtraData)^.Modified then
+ inherited WriteRecord(Data^.ID, @PPageInfo(Data^.ExtraData)^.Data);
+ finally
+ // free cached page mem
+ FreeMem(Data^.ExtraData);
+ end;
end;
function TCachedFile.AddToCache(RecNo: Integer; Buffer: Pointer): PPageInfo;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|