else
{
PVFATFCB TargetFcb;
- LONG idx, FileNameLen;
+ LONG idx;
vfatAddToStat(DeviceExt, Fat.CreateHits, 1);
{
vfatGrabFCB(DeviceExt, ParentFcb);
}
- Status = vfatGetFCBForFile(DeviceExt, &ParentFcb, &TargetFcb, &PathNameU);
+ Status = vfatGetFCBForFile(DeviceExt, &ParentFcb, &TargetFcb, &PathNameU);
if (NT_SUCCESS(Status))
{
vfatReleaseFCB(DeviceExt, TargetFcb);
if (idx > 0 || PathNameU.Buffer[0] == L'\\')
{
- /* We don't want to include / in the name */
- FileNameLen = PathNameU.Length - ((idx + 1) * sizeof(WCHAR));
-
- /* Update FO just to keep file name */
- /* Skip first slash */
- ++idx;
- FileObject->FileName.Length = FileNameLen;
- RtlMoveMemory(&PathNameU.Buffer[0], &PathNameU.Buffer[idx], FileObject->FileName.Length);
+ /* Terminate the string at the last backslash */
+ PathNameU.Buffer[idx + 1] = UNICODE_NULL;
+ PathNameU.Length = (idx + 1) * sizeof(WCHAR);
+ PathNameU.MaximumLength = PathNameU.Length + sizeof(WCHAR);
+
+ /* Update the file object as well */
+ FileObject->FileName.Length = PathNameU.Length;
+ FileObject->FileName.MaximumLength = PathNameU.MaximumLength;
}
else
{