Browse Source

* patch by Joeny Ang: fix TDbf memory leak, resolves #40709

florian 1 year ago
parent
commit
961e8fb749
1 changed files with 3 additions and 2 deletions
  1. 3 2
      packages/fcl-db/src/dbase/dbf.pas

+ 3 - 2
packages/fcl-db/src/dbase/dbf.pas

@@ -1258,15 +1258,16 @@ var
 begin
 begin
   MustReleaseDbfFile := false;
   MustReleaseDbfFile := false;
   with FieldDefs do
   with FieldDefs do
-  begin
+  try
     if FDbfFile = nil then
     if FDbfFile = nil then
     begin
     begin
+      MustReleaseDbfFile := true;
       // do not AutoCreate file
       // do not AutoCreate file
       InitDbfFile(pfReadOnly);
       InitDbfFile(pfReadOnly);
       FDbfFile.Open;
       FDbfFile.Open;
-      MustReleaseDbfFile := true;
     end;
     end;
     GetFieldDefsFromDbfFieldDefs;
     GetFieldDefsFromDbfFieldDefs;
+  finally
     if MustReleaseDbfFile then
     if MustReleaseDbfFile then
       FreeAndNil(FDbfFile);
       FreeAndNil(FDbfFile);
   end;
   end;