From 47208d263f3940ec65e7f94b9cc8f4c588234ac5 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 4 Oct 2009 17:29:18 +0200 Subject: Always check GetFileInfoSL() result This prevents crashes when file was deleted and included in selection for some operation. Also fix minor memory leaks... --- UChecksum.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'UChecksum.pas') 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; -- cgit v1.2.3