|
@@ -3348,7 +3348,8 @@ function TRegExpr.regrepeat(p: PRegExprChar; AMax: integer): integer;
|
|
var
|
|
var
|
|
scan: PRegExprChar;
|
|
scan: PRegExprChar;
|
|
opnd: PRegExprChar;
|
|
opnd: PRegExprChar;
|
|
- TheMax, NLen: integer;
|
|
|
|
|
|
+ TheMax: PtrInt; // PtrInt, gets diff of 2 pointers
|
|
|
|
+ //NLen: integer;
|
|
InvChar: REChar; // ###0.931
|
|
InvChar: REChar; // ###0.931
|
|
GrpStart, GrpEnd: PRegExprChar; // ###0.936
|
|
GrpStart, GrpEnd: PRegExprChar; // ###0.936
|
|
ArrayIndex: integer;
|
|
ArrayIndex: integer;
|
|
@@ -3369,9 +3370,12 @@ begin
|
|
end;
|
|
end;
|
|
OP_EXACTLY:
|
|
OP_EXACTLY:
|
|
begin // in opnd can be only ONE char !!!
|
|
begin // in opnd can be only ONE char !!!
|
|
|
|
+ {
|
|
|
|
+ // Alexey: commented because of https://github.com/andgineer/TRegExpr/issues/145
|
|
NLen := PLongInt(opnd)^;
|
|
NLen := PLongInt(opnd)^;
|
|
if TheMax > NLen then
|
|
if TheMax > NLen then
|
|
TheMax := NLen;
|
|
TheMax := NLen;
|
|
|
|
+ }
|
|
Inc(opnd, RENumberSz);
|
|
Inc(opnd, RENumberSz);
|
|
while (Result < TheMax) and (opnd^ = scan^) do
|
|
while (Result < TheMax) and (opnd^ = scan^) do
|
|
begin
|
|
begin
|
|
@@ -3381,9 +3385,12 @@ begin
|
|
end;
|
|
end;
|
|
OP_EXACTLYCI:
|
|
OP_EXACTLYCI:
|
|
begin // in opnd can be only ONE char !!!
|
|
begin // in opnd can be only ONE char !!!
|
|
|
|
+ {
|
|
|
|
+ // Alexey: commented because of https://github.com/andgineer/TRegExpr/issues/145
|
|
NLen := PLongInt(opnd)^;
|
|
NLen := PLongInt(opnd)^;
|
|
if TheMax > NLen then
|
|
if TheMax > NLen then
|
|
TheMax := NLen;
|
|
TheMax := NLen;
|
|
|
|
+ }
|
|
Inc(opnd, RENumberSz);
|
|
Inc(opnd, RENumberSz);
|
|
while (Result < TheMax) and (opnd^ = scan^) do
|
|
while (Result < TheMax) and (opnd^ = scan^) do
|
|
begin // prevent unneeded InvertCase //###0.931
|
|
begin // prevent unneeded InvertCase //###0.931
|