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&r…
==============================================================================
--- 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 */