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 */