[ros-diffs] [pschweitzer] 50680: [NTOSKRNL] For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: - Get back "useless checks" (tests show they weren't that useless) - Prevent code redundancy This fixes 4...

pschweitzer at svn.reactos.org pschweitzer at svn.reactos.org
Sun Feb 13 08:43:49 UTC 2011


Author: pschweitzer
Date: Sun Feb 13 08:43:48 2011
New Revision: 50680

URL: http://svn.reactos.org/svn/reactos?rev=50680&view=rev
Log:
[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

Modified:
    trunk/reactos/ntoskrnl/fsrtl/dbcsname.c
    trunk/reactos/ntoskrnl/fsrtl/name.c

Modified: trunk/reactos/ntoskrnl/fsrtl/dbcsname.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/dbcsname.c?rev=50680&r1=50679&r2=50680&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/fsrtl/dbcsname.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/fsrtl/dbcsname.c [iso-8859-1] Sun Feb 13 08:43:48 2011
@@ -184,40 +184,37 @@
         else if (Expression->Buffer[ExpressionPosition] == '*')
         {
             StarFound = ExpressionPosition++;
-            if (StarFound < (Expression->Length - 1))
+            if (ExpressionPosition == Expression->Length)
+            {
+                NamePosition = Name->Length;
+            }
+        }
+        else if (Expression->Buffer[ExpressionPosition] == ANSI_DOS_STAR)
+        {
+            StarFound = MAXUSHORT;
+            MatchingChars = NamePosition;
+            while (MatchingChars < Name->Length)
+            {
+                if (Name->Buffer[MatchingChars] == '.')
+                {
+                    NamePosition = MatchingChars;
+                }
+                MatchingChars++;
+            }
+            ExpressionPosition++;
+        }
+        else if (StarFound != MAXUSHORT)
+        {
+            ExpressionPosition = StarFound + 1;
+            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)
             {
                 while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] &&
                        NamePosition < Name->Length)
                 {
                     NamePosition++;
                 }
-            }
-            else
-            {
-                NamePosition = Name->Length;
-            }
-        }
-        else if (Expression->Buffer[ExpressionPosition] == ANSI_DOS_STAR)
-        {
-            StarFound = MAXUSHORT;
-            MatchingChars = NamePosition;
-            while (MatchingChars < Name->Length)
-            {
-                if (Name->Buffer[MatchingChars] == '.')
-                {
-                    NamePosition = MatchingChars;
-                }
-                MatchingChars++;
-            }
-            ExpressionPosition++;
-        }
-        else if (StarFound != MAXUSHORT)
-        {
-            ExpressionPosition = StarFound + 1;
-            while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] &&
-                   NamePosition < Name->Length)
-            {
-                NamePosition++;
             }
         }
         else

Modified: trunk/reactos/ntoskrnl/fsrtl/name.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/name.c?rev=50680&r1=50679&r2=50680&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/fsrtl/name.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/fsrtl/name.c [iso-8859-1] Sun Feb 13 08:43:48 2011
@@ -44,40 +44,37 @@
         else if (Expression->Buffer[ExpressionPosition] == L'*')
         {
             StarFound = ExpressionPosition++;
-            if (StarFound < (Expression->Length / sizeof(WCHAR) - 1))
+            if (ExpressionPosition == Expression->Length / sizeof(WCHAR))
+            {
+                NamePosition = Name->Length / sizeof(WCHAR);
+            }
+        }
+        else if (Expression->Buffer[ExpressionPosition] == DOS_STAR)
+        {
+            StarFound = MAXUSHORT;
+            MatchingChars = NamePosition;
+            while (MatchingChars < Name->Length / sizeof(WCHAR))
+            {
+                if (Name->Buffer[MatchingChars] == L'.')
+                {
+                    NamePosition = MatchingChars;
+                }
+                MatchingChars++;
+            }
+            ExpressionPosition++;
+        }
+        else if (StarFound != MAXUSHORT)
+        {
+            ExpressionPosition = StarFound + 1;
+            if (Expression->Buffer[ExpressionPosition] != L'*' && Expression->Buffer[ExpressionPosition] != L'?' && 
+                Expression->Buffer[ExpressionPosition] != DOS_DOT && Expression->Buffer[ExpressionPosition] != DOS_QM &&
+                Expression->Buffer[ExpressionPosition] != DOS_STAR)
             {
                 while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] &&
                        NamePosition < Name->Length / sizeof(WCHAR))
                 {
                     NamePosition++;
                 }
-            }
-            else
-            {
-                NamePosition = Name->Length / sizeof(WCHAR);
-            }
-        }
-        else if (Expression->Buffer[ExpressionPosition] == DOS_STAR)
-        {
-            StarFound = MAXUSHORT;
-            MatchingChars = NamePosition;
-            while (MatchingChars < Name->Length / sizeof(WCHAR))
-            {
-                if (Name->Buffer[MatchingChars] == L'.')
-                {
-                    NamePosition = MatchingChars;
-                }
-                MatchingChars++;
-            }
-            ExpressionPosition++;
-        }
-        else if (StarFound != MAXUSHORT)
-        {
-            ExpressionPosition = StarFound + 1;
-            while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] &&
-                       NamePosition < Name->Length / sizeof(WCHAR))
-            {
-                NamePosition++;
             }
         }
         else




More information about the Ros-diffs mailing list