summaryrefslogtreecommitdiff
path: root/UChecksum.pas
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2009-10-04 17:29:18 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2009-10-04 17:29:18 +0200
commit47208d263f3940ec65e7f94b9cc8f4c588234ac5 (patch)
treef7b3bb5a5bfa655d0568a44e6fbdf17f08ce106c /UChecksum.pas
parent9edcc05f98afb705071e9a906492aaf4d3a10160 (diff)
downloadtuxcmd-47208d263f3940ec65e7f94b9cc8f4c588234ac5.tar.xz
Always check GetFileInfoSL() result
This prevents crashes when file was deleted and included in selection for some operation. Also fix minor memory leaks...
Diffstat (limited to 'UChecksum.pas')
-rw-r--r--UChecksum.pas9
1 files changed, 6 insertions, 3 deletions
diff --git a/UChecksum.pas b/UChecksum.pas
index 6634601..679d7ef 100644
--- a/UChecksum.pas
+++ b/UChecksum.pas
@@ -206,9 +206,10 @@ var FD: TEngineFileDes;
begin
Result := False;
Stat := Engine.GetFileInfoSL(FileName);
- if (Stat.Size > 128*1024) then begin
+ if (Stat <> nil) and (Stat.Size > 128*1024) then begin
i := integer(Application.MessageBox(Format(LANGTheFileSYouAreTryingToOpenIsQuiteBig, [StrToUTF8(ExtractFileName(FileName))]), [mbYes, mbNo], mbWarning, mbNone, mbNo));
if (i = integer(mbNo)) or (i = 251) then Exit;
+ FreeDataItem(Stat);
end;
IsMD5 := (Pos('MD5', WideUpperCase(ExtractFileName(FileName))) > 0) or ((Pos('SFV', WideUpperCase(ExtractFileName(FileName))) = 0) and (Pos('SUM', WideUpperCase(ExtractFileName(FileName))) > 0));
if IsMD5 then MD5Present := True
@@ -312,8 +313,10 @@ begin
Item.FullPath := IncludeTrailingPathDelimiter(Path) + s2;
end;
Stat := Engine.GetFileInfoSL(Item.FullPath);
- if Assigned(Stat) then Item.Size := Stat.Size
- else Item.Size := 0;
+ if Assigned(Stat) then begin
+ Item.Size := Stat.Size;
+ FreeDataItem(Stat);
+ end else Item.Size := 0;
List.Add(Item);
ListItem := FileList.Items.Add;
ListItem.Data := Item;