Author: hbelusca
Date: Mon Jun  3 21:05:32 2013
New Revision: 59173

URL: http://svn.reactos.org/svn/reactos?rev=59173&view=rev
Log:
[RTL]
Revert r59165 because RtlPrefixUnicodeString may not behave exactly as what the 
original code did (but keep the command in comment). I also want how tests 
behave with the change.

Modified:
    trunk/reactos/lib/rtl/path.c

Modified: trunk/reactos/lib/rtl/path.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/path.c?rev=59173&r1=59172&r2=59173&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/path.c        [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/path.c        [iso-8859-1] Mon Jun  3 21:05:32 2013
@@ -479,18 +479,15 @@
     /* Capture input string */
     CapturedDosName = *DosName;
 
-    /* Check for the presence of the NT prefix "\\?\" form */
-    if (RtlPrefixUnicodeString(&RtlpWin32NtRootSlash, &CapturedDosName, FALSE))
-    {
-        /* NT prefix is contained in the path */
-
-        /* Use the optimized path after acquiring the lock */
-        QuickPath = TRUE;
-        NewBuffer = NULL;
-    }
-    else
-    {
-        /* NT prefix is not contained in the path */
+    /* Check for the presence or absence of the NT prefix "\\?\" form */
+    // if (!RtlPrefixUnicodeString(&RtlpWin32NtRootSlash, &CapturedDosName, 
FALSE))
+    if ((CapturedDosName.Length <= RtlpWin32NtRootSlash.Length) ||
+        (CapturedDosName.Buffer[0] != RtlpWin32NtRootSlash.Buffer[0]) ||
+        (CapturedDosName.Buffer[1] != RtlpWin32NtRootSlash.Buffer[1]) ||
+        (CapturedDosName.Buffer[2] != RtlpWin32NtRootSlash.Buffer[2]) ||
+        (CapturedDosName.Buffer[3] != RtlpWin32NtRootSlash.Buffer[3]))
+    {
+        /* NT prefix not present */
 
         /* Quick path won't be used */
         QuickPath = FALSE;
@@ -503,6 +500,14 @@
         NewBuffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, MaxLength);
         DPRINT("MaxLength: %lx\n", MaxLength);
         if (!NewBuffer) return STATUS_NO_MEMORY;
+    }
+    else
+    {
+        /* NT prefix present */
+
+        /* Use the optimized path after acquiring the lock */
+        QuickPath = TRUE;
+        NewBuffer = NULL;
     }
 
     /* Lock the PEB and check if the quick path can be used */


Reply via email to