Don't try to create a file, if no parent fcb was found.
Modified: trunk/reactos/drivers/fs/vfat/create.c
_____
Modified: trunk/reactos/drivers/fs/vfat/create.c
--- trunk/reactos/drivers/fs/vfat/create.c 2005-12-04 15:07:22 UTC
(rev 19870)
+++ trunk/reactos/drivers/fs/vfat/create.c 2005-12-04 15:09:07 UTC
(rev 19871)
@@ -439,7 +439,7 @@
ULONG RequestedDisposition, RequestedOptions;
PVFATCCB pCcb;
PVFATFCB pFcb = NULL;
- PVFATFCB ParentFcb;
+ PVFATFCB ParentFcb = NULL;
PWCHAR c, last;
BOOLEAN PagingFileCreate = FALSE;
BOOLEAN Dots;
@@ -543,8 +543,8 @@
* fail immediately
*/
if (Status == STATUS_OBJECT_PATH_NOT_FOUND ||
- Status == STATUS_INVALID_PARAMETER ||
- Status == STATUS_DELETE_PENDING)
+ Status == STATUS_INVALID_PARAMETER ||
+ Status == STATUS_DELETE_PENDING)
{
if (ParentFcb)
{
@@ -552,6 +552,11 @@
}
return(Status);
}
+ if (!NT_SUCCESS(Status) && ParentFcb == NULL)
+ {
+ DPRINT1("VfatOpenFile faild for '%wZ', status %x\n",
&PathNameU, Status);
+ return Status;
+ }
/*
* If the file open failed then create the required file
@@ -564,11 +569,6 @@
RequestedDisposition == FILE_SUPERSEDE)
{
ULONG Attributes;
- if (ParentFcb == NULL)
- {
- ParentFcb = vfatOpenRootFCB (DeviceExt);
- ASSERT(ParentFcb != NULL);
- }
Attributes =
Stack->Parameters.Create.FileAttributes;
vfatSplitPathName(&PathNameU, NULL, &FileNameU);