From d62b3b42e882c3201570e98f40b952abaab91132 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Mon, 16 Jun 2003 19:15:57 +0000 Subject: [PATCH] - Fixed the check for an existing paging file. svn path=/trunk/; revision=4906 --- reactos/drivers/fs/vfat/create.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/reactos/drivers/fs/vfat/create.c b/reactos/drivers/fs/vfat/create.c index 65ec9314f67..15ac18c9dad 100644 --- a/reactos/drivers/fs/vfat/create.c +++ b/reactos/drivers/fs/vfat/create.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: create.c,v 1.57 2003/06/07 11:34:36 chorns Exp $ +/* $Id: create.c,v 1.58 2003/06/16 19:15:57 hbirr Exp $ * * PROJECT: ReactOS kernel * FILE: services/fs/vfat/create.c @@ -667,8 +667,7 @@ VfatCreateFile (PDEVICE_OBJECT DeviceObject, PIRP Irp) return(STATUS_NOT_A_DIRECTORY); } - if ((PagingFileCreate && !(pFcb->Flags & FCB_IS_PAGE_FILE)) || - (!PagingFileCreate && (pFcb->Flags & FCB_IS_PAGE_FILE))) + if (PagingFileCreate) { /* FIXME: * Do more checking for page files. It is possible, @@ -678,8 +677,26 @@ VfatCreateFile (PDEVICE_OBJECT DeviceObject, PIRP Irp) * is held in memory. Try to remove the fileobject * from cache manager and use the fcb. */ - VfatCloseFile(DeviceExt, FileObject); - return(STATUS_INVALID_PARAMETER); + if (pFcb->RefCount > 1) + { + if(!(pFcb->Flags & FCB_IS_PAGE_FILE)) + { + VfatCloseFile(DeviceExt, FileObject); + return(STATUS_INVALID_PARAMETER); + } + } + else + { + pFcb->Flags |= FCB_IS_PAGE_FILE; + } + } + else + { + if (pFcb->Flags & FCB_IS_PAGE_FILE) + { + VfatCloseFile(DeviceExt, FileObject); + return(STATUS_INVALID_PARAMETER); + } }