FIX: Bug [0001387]

This commit is contained in:
Alexander Koblov 2017-07-29 15:11:16 +00:00
commit d65b35b371
3 changed files with 14 additions and 7 deletions

View file

@ -30,8 +30,9 @@ uses
SysUtils, Classes, DynLibs, DCClassesUtf8, DCBasicTypes;
const
fmOpenSync = $10000;
fmOpenDirect = $20000;
fmOpenSync = $10000;
fmOpenDirect = $20000;
fmOpenNoATime = $40000;
type
TFileMapRec = record
@ -566,10 +567,16 @@ end;
function mbFileOpen(const FileName: String; Mode: LongWord): System.THandle;
{$IFDEF MSWINDOWS}
const
ft: TFileTime = ( dwLowDateTime: $FFFFFFFF; dwHighDateTime: $FFFFFFFF; );
begin
Result:= CreateFileW(PWideChar(UTF16LongName(FileName)), AccessModes[Mode and 3],
Result:= CreateFileW(PWideChar(UTF16LongName(FileName)),
AccessModes[Mode and 3] or ((Mode and fmOpenNoATime) shr 10),
ShareModes[(Mode and $F0) shr 4], nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, OpenFlags[(Mode shr 16) and 3]);
if (Result <> feInvalidHandle) then begin
if (Mode and fmOpenNoATime <> 0) then SetFileTime(Result, nil, @ft, @ft);
end;
end;
{$ELSE}
begin

View file

@ -258,7 +258,7 @@ begin
// Simple regular expression search (don't work for very big files)
if bRegExp then
begin
fs := TFileStreamEx.Create(sFileName, fmOpenRead or fmShareDenyNone);
fs := TFileStreamEx.Create(sFileName, fmOpenRead or fmShareDenyNone or fmOpenNoATime);
try
if fs.Size = 0 then Exit;
{$PUSH}{$R-}
@ -296,7 +296,7 @@ begin
if sDataLength > BufferSize then
raise Exception.Create(rsMsgErrSmallBuf);
fs := TFileStreamEx.Create(sFileName, fmOpenRead or fmShareDenyNone);
fs := TFileStreamEx.Create(sFileName, fmOpenRead or fmShareDenyNone or fmOpenNoATime);
try
if sDataLength > fs.Size then // string longer than file, cannot search
Exit;

View file

@ -220,7 +220,7 @@ begin
// If thumbnail already exists in cache for this file then load it
if mbFileExists(sThumbFileName) then
begin
fsFileStream:= TFileStreamEx.Create(sThumbFileName, fmOpenRead or fmShareDenyNone);
fsFileStream:= TFileStreamEx.Create(sThumbFileName, fmOpenRead or fmShareDenyNone or fmOpenNoATime);
try
if ReadMetaData(aFile, fsFileStream) then
begin
@ -255,7 +255,7 @@ begin
// Create thumb for image files
if GetGraphicClassForFileExtension(sExt) <> nil then
begin
fsFileStream:= TFileStreamEx.Create(sFullPathToFile, fmOpenRead or fmShareDenyNone);
fsFileStream:= TFileStreamEx.Create(sFullPathToFile, fmOpenRead or fmShareDenyNone or fmOpenNoATime);
with Picture do
try
LoadFromStreamWithFileExt(fsFileStream, sExt);