* Fix bug ID #37159: upstream patches

git-svn-id: trunk@45585 -
This commit is contained in:
michael 2020-06-04 13:32:47 +00:00
parent b776d48367
commit 35c5479f96

View File

@ -2951,6 +2951,7 @@ var
Len: integer;
SavedPtr: PRegExprChar;
EnderChar, TempChar: REChar;
DashForRange: Boolean;
begin
Result := nil;
flags := 0;
@ -3008,8 +3009,18 @@ begin
while (regparse < fRegexEnd) and (regparse^ <> ']') do
begin
if (regparse^ = '-') and ((regparse + 1) < fRegexEnd) and
((regparse + 1)^ <> ']') and CanBeRange then
// last '-' inside [] treated as simple dash
if (regparse^ = '-') and
((regparse + 1) < fRegexEnd) and
((regparse + 1)^ = ']') then
begin
EmitRangeChar('-', False);
Inc(regparse);
Break;
end;
// char '-' which (maybe) makes a range
if (regparse^ = '-') and ((regparse + 1) < fRegexEnd) and CanBeRange then
begin
Inc(regparse);
RangeEnd := regparse^;
@ -3085,12 +3096,22 @@ begin
else
begin
TempChar := UnQuoteChar(regparse);
EmitRangeChar(TempChar, (regparse + 1)^ = '-');
// False if '-' is last char in []
DashForRange :=
(regparse + 2 < fRegexEnd) and
((regparse + 1)^ = '-') and
((regparse + 2)^ <> ']');
EmitRangeChar(TempChar, DashForRange);
end;
end
else
begin
EmitRangeChar(regparse^, (regparse + 1)^ = '-');
// False if '-' is last char in []
DashForRange :=
(regparse + 2 < fRegexEnd) and
((regparse + 1)^ = '-') and
((regparse + 2)^ <> ']');
EmitRangeChar(regparse^, DashForRange);
end;
Inc(regparse);
end;
@ -4468,7 +4489,7 @@ begin
end;
SetLength(Result, ResultLen);
// Fill Result
ResultPtr := Pointer(Result);
ResultPtr := PRegExprChar(Result);
p := TemplateBeg;
Mode := smodeNormal;
while p < TemplateEnd do