From 7af94c863daabd2c3a217fbed0c5c9104f087ad9 Mon Sep 17 00:00:00 2001 From: Art Yerkes Date: Mon, 11 Apr 2005 08:41:58 +0000 Subject: [PATCH] Use the right set (the referenced file objects) to compare when killing exclusive select objects. This fixes the select leakage observed when running Xircon. svn path=/trunk/; revision=14586 --- reactos/drivers/net/afd/afd/select.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/reactos/drivers/net/afd/afd/select.c b/reactos/drivers/net/afd/afd/select.c index aae2412693a..352a85d8ba7 100644 --- a/reactos/drivers/net/afd/afd/select.c +++ b/reactos/drivers/net/afd/afd/select.c @@ -120,6 +120,7 @@ VOID KillSelectsForFCB( PAFD_DEVICE_EXTENSION DeviceExt, PAFD_ACTIVE_POLL Poll; PIRP Irp; PAFD_POLL_INFO PollReq; + PAFD_HANDLE HandleArray; int i; AFD_DbgPrint(MID_TRACE,("Killing selects that refer to %x\n", FileObject)); @@ -132,11 +133,12 @@ VOID KillSelectsForFCB( PAFD_DEVICE_EXTENSION DeviceExt, ListEntry = ListEntry->Flink; Irp = Poll->Irp; PollReq = Irp->AssociatedIrp.SystemBuffer; - + HandleArray = AFD_HANDLES(PollReq); + for( i = 0; i < PollReq->HandleCount; i++ ) { AFD_DbgPrint(MAX_TRACE,("Req: %x, This %x\n", - PollReq->Handles[i].Handle, FileObject)); - if( (PVOID)PollReq->Handles[i].Handle == FileObject && + HandleArray[i].Handle, FileObject)); + if( (PVOID)HandleArray[i].Handle == FileObject && (!OnlyExclusive || (OnlyExclusive && Poll->Exclusive)) ) { ZeroEvents( PollReq->Handles, PollReq->HandleCount ); SignalSocket( Poll, PollReq, STATUS_SUCCESS );