mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 11:08:00 +02:00
IDE: fixed checking for file changes on non UTF-8 files
git-svn-id: branches/fixes_1_8@55463 -
This commit is contained in:
parent
28e1ef5503
commit
aa4d6f264c
@ -110,23 +110,33 @@ function ShowDiskDiffsDialog(AnUnitList: TFPList; APackageList: TStringList;
|
||||
var
|
||||
i: Integer;
|
||||
CurUnit: TUnitInfo;
|
||||
Changed: Boolean;
|
||||
MemCode: TCodeBuffer;
|
||||
s, DiskEncoding, MemEncoding: String;
|
||||
fs: TFileStreamUTF8;
|
||||
UnitDidNotChange: Boolean;
|
||||
s: string;
|
||||
begin
|
||||
if AnUnitList=nil then exit;
|
||||
for i:=AnUnitList.Count-1 downto 0 do begin
|
||||
CurUnit:=TUnitInfo(AnUnitList[i]);
|
||||
UnitDidNotChange:=false;
|
||||
MemCode:=CurUnit.Source;
|
||||
Changed:=true;
|
||||
try
|
||||
fs:=TFileStreamUTF8.Create(CurUnit.Filename,fmOpenRead);
|
||||
fs := TFileStreamUTF8.Create(MemCode.Filename, fmOpenRead or fmShareDenyNone);
|
||||
try
|
||||
if fs.Size=CurUnit.Source.SourceLength then begin
|
||||
// size has not changed => load to see difference
|
||||
SetLength(s,fs.Size);
|
||||
fs.Read(s[1],length(s));
|
||||
if s=CurUnit.Source.Source then
|
||||
UnitDidNotChange:=true;
|
||||
SetLength(s, fs.Size);
|
||||
if s <> '' then
|
||||
fs.Read(s[1], length(s));
|
||||
DiskEncoding := '';
|
||||
MemEncoding := '';
|
||||
MemCode.CodeCache.OnDecodeLoaded(MemCode,MemCode.Filename,
|
||||
s,DiskEncoding,MemEncoding);
|
||||
//debugln(['CheckUnitsWithLoading ',MemCode.Filename,
|
||||
// ' ',length(s),'=',MemCode.SourceLength]);
|
||||
if (MemEncoding=MemCode.MemEncoding)
|
||||
and (DiskEncoding=MemCode.DiskEncoding)
|
||||
and (length(s)=MemCode.SourceLength)
|
||||
and (s=MemCode.Source) then begin
|
||||
Changed:=false;
|
||||
end;
|
||||
finally
|
||||
fs.Free;
|
||||
@ -134,7 +144,7 @@ function ShowDiskDiffsDialog(AnUnitList: TFPList; APackageList: TStringList;
|
||||
except
|
||||
// unable to load
|
||||
end;
|
||||
if UnitDidNotChange then begin
|
||||
if not Changed then begin
|
||||
if (CurUnit.Source<>nil) then CurUnit.Source.MakeFileDateValid;
|
||||
AnUnitList.Delete(i);
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user