[RTL]: Makes sure there is a curdir handle.

svn path=/trunk/; revision=52728
This commit is contained in:
Alex Ionescu 2011-07-18 13:46:43 +00:00
parent 16163bbc4a
commit 1fdc23fa32

View file

@ -593,14 +593,17 @@ RtlpDosPathNameToRelativeNtPathName_Ustr(IN BOOLEAN HaveRelative,
PCURDIR cd;
UNICODE_STRING us;
cd = (PCURDIR)&(NtCurrentPeb ()->ProcessParameters->CurrentDirectory.DosPath);
RtlInitUnicodeString(&us, Buffer);
if (RtlEqualUnicodeString(&us, &cd->DosPath, TRUE))
if (cd->Handle)
{
Length = ((cd->DosPath.Length / sizeof(WCHAR)) - PrefixCut) + ((InputPathType == 1) ? 8 : 4);
RelativeName->RelativeName.Buffer = NewBuffer + Length;
RelativeName->RelativeName.Length = NtName->Length - (Length * sizeof(WCHAR));
RelativeName->RelativeName.MaximumLength = RelativeName->RelativeName.Length;
RelativeName->ContainingDirectory = cd->Handle;
RtlInitUnicodeString(&us, Buffer);
if (RtlEqualUnicodeString(&us, &cd->DosPath, TRUE))
{
Length = ((cd->DosPath.Length / sizeof(WCHAR)) - PrefixCut) + ((InputPathType == 1) ? 8 : 4);
RelativeName->RelativeName.Buffer = NewBuffer + Length;
RelativeName->RelativeName.Length = NtName->Length - (Length * sizeof(WCHAR));
RelativeName->RelativeName.MaximumLength = RelativeName->RelativeName.Length;
RelativeName->ContainingDirectory = cd->Handle;
}
}
}
}