Use the right set (the referenced file objects) to compare when killing
exclusive select objects. This fixes the select leakage observed when
running Xircon.
Modified: trunk/reactos/drivers/net/afd/afd/select.c
_____
Modified: trunk/reactos/drivers/net/afd/afd/select.c
--- trunk/reactos/drivers/net/afd/afd/select.c 2005-04-11 08:07:41 UTC
(rev 14585)
+++ trunk/reactos/drivers/net/afd/afd/select.c 2005-04-11 08:41:58 UTC
(rev 14586)
@@ -120,6 +120,7 @@
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 @@
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 );
Show replies by date