- Free always the name string and the completion context in IopDeleteFile. - Fixed the check for synchronous operations in NtQueryDirectoryFile. Modified: trunk/reactos/ntoskrnl/io/file.c _____
Modified: trunk/reactos/ntoskrnl/io/file.c --- trunk/reactos/ntoskrnl/io/file.c 2005-05-05 10:59:34 UTC (rev 14988) +++ trunk/reactos/ntoskrnl/io/file.c 2005-05-05 11:03:27 UTC (rev 14989) @@ -227,19 +227,20 @@
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 @@ 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,