mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
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
This commit is contained in:
parent
d34cc750d8
commit
7af94c863d
1 changed files with 5 additions and 3 deletions
|
@ -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 );
|
||||
|
|
Loading…
Reference in a new issue