From c48ce44f600e248c7d55c69193c82ae768d2efb7 Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 26 Sep 2008 09:36:41 +0000 Subject: [PATCH] LCL: FileSize fixed for files bigger than 2GB git-svn-id: trunk@16747 - --- lcl/include/fileutil.inc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lcl/include/fileutil.inc b/lcl/include/fileutil.inc index f9ad89eec4..768f8dc2dd 100644 --- a/lcl/include/fileutil.inc +++ b/lcl/include/fileutil.inc @@ -828,7 +828,7 @@ end; function FileSize(const Filename: string): int64; {$IFDEF Unix} var - st : baseunix.stat; + st: baseunix.stat; {$ELSE} var FileInfo: TSearchRec; @@ -839,11 +839,13 @@ begin exit(-1); Result:=st.st_size; {$ELSE} - if FindFirstUTF8(Filename,faAnyFile,FileInfo)=0 then begin - Result:=FileInfo.Size; - end else - Result:=-1; - FindCloseUTF8(FileInfo); + FileInfo.Name:=UTF8ToSys(Filename); + FileInfo.FindHandle:=Windows.FindFirstFile(PChar(FileInfo.Name),FileInfo.FindData); + if FileInfo.FindHandle=Windows.Invalid_Handle_value then begin + Result:=Windows.GetLastError; + exit; + end; + Result:=(int64(FileInfo.FindData.nFileSizeHigh) shl 32)+FileInfo.FindData.nFileSizeLow; {$ENDIF} end;