diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-10-04 17:29:18 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-10-04 17:29:18 +0200 |
| commit | 47208d263f3940ec65e7f94b9cc8f4c588234ac5 (patch) | |
| tree | f7b3bb5a5bfa655d0568a44e6fbdf17f08ce106c /UChecksum.pas | |
| parent | 9edcc05f98afb705071e9a906492aaf4d3a10160 (diff) | |
| download | tuxcmd-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.pas | 9 |
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; |
