From 3d47bef87ecd7d2b820a115ca1eec88afd0a01e8 Mon Sep 17 00:00:00 2001 From: Juha Date: Sat, 6 Jul 2024 06:08:20 +0300 Subject: [PATCH] Codetools,IDE: Allow renaming project files to lowercase in a case-insensitive file system. Issue #10370. --- components/codetools/codecache.pas | 7 ++++--- ide/sourcefilemanager.pas | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/components/codetools/codecache.pas b/components/codetools/codecache.pas index fd008f2972..d826ac7b5e 100644 --- a/components/codetools/codecache.pas +++ b/components/codetools/codecache.pas @@ -749,9 +749,10 @@ end; function TCodeCache.CreateFile(const AFilename: string): TCodeBuffer; begin Result:=FindFile(AFileName); - if Result<>nil then begin - Result.Clear; - end else begin + // Create a new buffer also when only char case differs in names. + if (Result<>nil) and (Result.Filename=AFilename) then + Result.Clear + else begin Result:=TCodeBuffer.Create; Result.FileName:=AFileName; FItems.Add(Result); diff --git a/ide/sourcefilemanager.pas b/ide/sourcefilemanager.pas index 55a6b361f7..849b7e478f 100644 --- a/ide/sourcefilemanager.pas +++ b/ide/sourcefilemanager.pas @@ -6024,7 +6024,7 @@ begin // check if file is already lowercase (or it does not matter in current OS) OldShortFilename:=ExtractFilename(OldFilename); NewShortFilename:=lowercase(OldShortFilename); - if CompareFilenames(OldShortFilename,NewShortFilename)=0 then exit; + if OldShortFilename=NewShortFilename then exit; // create new filename NewFilename:=ExtractFilePath(OldFilename)+NewShortFilename;