mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 14:59:30 +02:00
IDE: Optimize checking UTF8 codepoint size in "Find in Files". Issue #40904, patch by n7800.
This commit is contained in:
parent
94e7abc281
commit
83bb996e3c
@ -530,6 +530,7 @@ var
|
||||
NewMatchStartPos: PtrInt;
|
||||
NewMatchEndPos: PtrInt;
|
||||
lCaseMismatchCheckCompleted: Boolean;
|
||||
p1, p2: PChar;
|
||||
i, l, n1, n2: Integer;
|
||||
begin
|
||||
//debugln(['SearchInText TheFileName=',TheFileName,' SearchFor=',SearchFor,'" ReplaceText=',ReplaceText,'"']);
|
||||
@ -637,14 +638,21 @@ begin
|
||||
n1 := length(OriginalFile.Source);
|
||||
n2 := length(CaseFile.Source);
|
||||
|
||||
// length check has been done above
|
||||
p1 := @OriginalFile.Source[1];
|
||||
p2 := @CaseFile.Source[1];
|
||||
|
||||
l := n1; // assumed n1=n2
|
||||
i := 1;
|
||||
while (n1 = n2) and (i <= l) do
|
||||
begin
|
||||
// length of characters in bytes
|
||||
n1 := UTF8CodepointSize(@OriginalFile.Source[i]);
|
||||
n2 := UTF8CodepointSize(@CaseFile.Source[i]);
|
||||
inc(i, n1); // assumed n1=n2
|
||||
n1 := UTF8CodepointSizeFast(p1);
|
||||
n2 := UTF8CodepointSizeFast(p2);
|
||||
// assumed n1=n2
|
||||
inc(p1, n1);
|
||||
inc(p2, n1);
|
||||
inc(i, n1);
|
||||
end;
|
||||
|
||||
if n1 <> n2 then
|
||||
|
Loading…
Reference in New Issue
Block a user