From 5e49963c1ab3fc14abc2769ee57bd12ff0805554 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Thu, 5 May 2005 11:03:27 +0000 Subject: [PATCH] - Free always the name string and the completion context in IopDeleteFile. - Fixed the check for synchronous operations in NtQueryDirectoryFile. svn path=/trunk/; revision=14989 --- reactos/ntoskrnl/io/file.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/reactos/ntoskrnl/io/file.c b/reactos/ntoskrnl/io/file.c index 67aeba53be3..034afe1018e 100644 --- a/reactos/ntoskrnl/io/file.c +++ b/reactos/ntoskrnl/io/file.c @@ -227,19 +227,20 @@ IopDeleteFile(PVOID ObjectBody) KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); } - /* Clear the file name */ - if (FileObject->FileName.Buffer) - { - ExFreePool(FileObject->FileName.Buffer); - FileObject->FileName.Buffer = NULL; - } + } + + /* Clear the file name */ + if (FileObject->FileName.Buffer) + { + ExFreePool(FileObject->FileName.Buffer); + FileObject->FileName.Buffer = NULL; + } - /* Free the completion context */ - if (FileObject->CompletionContext) - { - ObDereferenceObject(FileObject->CompletionContext->Port); - ExFreePool(FileObject->CompletionContext); - } + /* Free the completion context */ + if (FileObject->CompletionContext) + { + ObDereferenceObject(FileObject->CompletionContext->Port); + ExFreePool(FileObject->CompletionContext); } } @@ -2146,7 +2147,7 @@ NtQueryDirectoryFile(IN HANDLE FileHandle, IoStack->Parameters.QueryDirectory.Length = Length; Status = IoCallDriver(FileObject->DeviceObject,Irp); - if (Status==STATUS_PENDING && !(FileObject->Flags & FO_SYNCHRONOUS_IO)) + if (Status==STATUS_PENDING && (FileObject->Flags & FO_SYNCHRONOUS_IO)) { KeWaitForSingleObject(&FileObject->Event, Executive,