From d4e44f51ea92906441172f0dd64f085db7b5fd10 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 13 Feb 2011 08:43:48 +0000 Subject: [PATCH] [NTOSKRNL] For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: - Get back "useless checks" (tests show they weren't that useless) - Prevent code redundancy This fixes 4 failing kmtest tests added in r50679 svn path=/trunk/; revision=50680 --- reactos/ntoskrnl/fsrtl/dbcsname.c | 21 +++++++++------------ reactos/ntoskrnl/fsrtl/name.c | 21 +++++++++------------ 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/reactos/ntoskrnl/fsrtl/dbcsname.c b/reactos/ntoskrnl/fsrtl/dbcsname.c index cdde1269e1b..67454955316 100644 --- a/reactos/ntoskrnl/fsrtl/dbcsname.c +++ b/reactos/ntoskrnl/fsrtl/dbcsname.c @@ -184,15 +184,7 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, else if (Expression->Buffer[ExpressionPosition] == '*') { StarFound = ExpressionPosition++; - if (StarFound < (Expression->Length - 1)) - { - while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length) - { - NamePosition++; - } - } - else + if (ExpressionPosition == Expression->Length) { NamePosition = Name->Length; } @@ -214,10 +206,15 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, else if (StarFound != MAXUSHORT) { ExpressionPosition = StarFound + 1; - while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length) + if (Expression->Buffer[ExpressionPosition] != '*' && Expression->Buffer[ExpressionPosition] != '?' && + Expression->Buffer[ExpressionPosition] != ANSI_DOS_DOT && Expression->Buffer[ExpressionPosition] != ANSI_DOS_QM && + Expression->Buffer[ExpressionPosition] != ANSI_DOS_STAR) { - NamePosition++; + while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && + NamePosition < Name->Length) + { + NamePosition++; + } } } else diff --git a/reactos/ntoskrnl/fsrtl/name.c b/reactos/ntoskrnl/fsrtl/name.c index 0712a2b38ad..88f60c0d30f 100644 --- a/reactos/ntoskrnl/fsrtl/name.c +++ b/reactos/ntoskrnl/fsrtl/name.c @@ -44,15 +44,7 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression, else if (Expression->Buffer[ExpressionPosition] == L'*') { StarFound = ExpressionPosition++; - if (StarFound < (Expression->Length / sizeof(WCHAR) - 1)) - { - while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length / sizeof(WCHAR)) - { - NamePosition++; - } - } - else + if (ExpressionPosition == Expression->Length / sizeof(WCHAR)) { NamePosition = Name->Length / sizeof(WCHAR); } @@ -74,10 +66,15 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression, else if (StarFound != MAXUSHORT) { ExpressionPosition = StarFound + 1; - while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length / sizeof(WCHAR)) + if (Expression->Buffer[ExpressionPosition] != L'*' && Expression->Buffer[ExpressionPosition] != L'?' && + Expression->Buffer[ExpressionPosition] != DOS_DOT && Expression->Buffer[ExpressionPosition] != DOS_QM && + Expression->Buffer[ExpressionPosition] != DOS_STAR) { - NamePosition++; + while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && + NamePosition < Name->Length / sizeof(WCHAR)) + { + NamePosition++; + } } } else