* Patch from Mantis #20046 fixing an issue in rcmatchstring.

git-svn-id: trunk@19072 -
This commit is contained in:
marco 2011-09-15 20:19:25 +00:00
parent 1365467b0d
commit 44bd4470f9

View File

@ -542,10 +542,12 @@ var
Ch : AnsiChar;
State : integer;
StrInx : integer;
LenStr : integer;
begin
{assume we fail to match}
Result := false;
Len := StartPosn;
LenStr := Length(s);
{clear the deque}
FHead := FCapacity div 2;
FTail := FHead;
@ -628,14 +630,14 @@ begin
end;
end;
end;
until (FHead = FTail) or (ch = #0); // deque empty or end of string
until (FHead = FTail) or (StrInx > LenStr); // deque empty or end of string
{if we reach this point we've either exhausted the deque or we've
run out of string; if the former, the substring did not match
since there are no more states. If the latter, we need to check
the states left on the deque to see if one is the terminating
state; if so the string matched the regular expression defined by
the transition table}
while (FHead <> FTail) do begin
while (FHead <> FTail) and (StrInx<=LenStr) do begin
State := DequePop;
with FStateTable[State] do begin
case sdMatchType of