break;
case '?':
- ExpressionPosition++;
+ if (++ExpressionPosition == Expression->Length)
+ {
+ NamePosition = Name->Length;
+ break;
+ }
+
MatchingChars = NamePosition;
- while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] &&
- NamePosition < Name->Length)
+ while (NamePosition < Name->Length &&
+ Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition])
{
NamePosition++;
}
break;
case ANSI_DOS_DOT:
- while (Name->Buffer[NamePosition] != '.' && NamePosition < Name->Length)
+ while (NamePosition < Name->Length && Name->Buffer[NamePosition] != '.')
{
NamePosition++;
}
else if (StarFound != MAXUSHORT)
{
ExpressionPosition = StarFound + 1;
- while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] &&
- NamePosition < Name->Length)
+ while (NamePosition < Name->Length &&
+ Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition])
{
NamePosition++;
}