1
0
Fork 0
mirror of https://github.com/reactos/reactos.git synced 2025-06-17 02:58:30 +00:00

[NTOSKRNL]

Allow ignoring all nullable matching wildcards at the end of the expression string when name is over in FsRtlIs*InExpression()
This fixes a few tests

svn path=/trunk/; revision=58806
This commit is contained in:
Pierre Schweitzer 2013-04-21 14:25:55 +00:00
parent e214308f84
commit d7c9b59f0f
2 changed files with 24 additions and 6 deletions
reactos/ntoskrnl/fsrtl

View file

@ -247,10 +247,19 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
ExpressionPosition = BackTracking[StarFound--]; ExpressionPosition = BackTracking[StarFound--];
} }
} }
if (ExpressionPosition + 1 == Expression->Length && NamePosition == Name->Length && /* If we have nullable matching wc at the end of the string, eat them */
(Expression->Buffer[ExpressionPosition] == ANSI_DOS_DOT || Expression->Buffer[ExpressionPosition] == '*')) if (ExpressionPosition != Expression->Length && NamePosition == Name->Length)
{ {
ExpressionPosition++; while (ExpressionPosition < Expression->Length)
{
if (Expression->Buffer[ExpressionPosition] != ANSI_DOS_DOT &&
Expression->Buffer[ExpressionPosition] != '*' &&
Expression->Buffer[ExpressionPosition] != ANSI_DOS_STAR)
{
break;
}
ExpressionPosition++;
}
} }
if (BackTracking) if (BackTracking)

View file

@ -184,10 +184,19 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression,
ExpressionPosition = BackTracking[StarFound--]; ExpressionPosition = BackTracking[StarFound--];
} }
} }
if (ExpressionPosition + 1 == Expression->Length / sizeof(WCHAR) && NamePosition == Name->Length / sizeof(WCHAR) && /* If we have nullable matching wc at the end of the string, eat them */
(Expression->Buffer[ExpressionPosition] == DOS_DOT || Expression->Buffer[ExpressionPosition] == L'*')) if (ExpressionPosition != Expression->Length / sizeof(WCHAR) && NamePosition == Name->Length / sizeof(WCHAR))
{ {
ExpressionPosition++; while (ExpressionPosition < Expression->Length / sizeof(WCHAR))
{
if (Expression->Buffer[ExpressionPosition] != DOS_DOT &&
Expression->Buffer[ExpressionPosition] != L'*' &&
Expression->Buffer[ExpressionPosition] != DOS_STAR)
{
break;
}
ExpressionPosition++;
}
} }
if (BackTracking) if (BackTracking)