mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 02:25:17 +00:00
Fixed [Ke/Nt]WaitForMultipleObjects() bug
svn path=/trunk/; revision=1239
This commit is contained in:
parent
db1ccdf290
commit
3ca24a2c2a
1 changed files with 60 additions and 60 deletions
|
@ -496,7 +496,12 @@ KeWaitForMultipleObjects (
|
||||||
}
|
}
|
||||||
blk = WaitBlockArray;
|
blk = WaitBlockArray;
|
||||||
}
|
}
|
||||||
|
if (Timeout != NULL)
|
||||||
|
{
|
||||||
|
KeAddThreadTimeout(CurrentThread,Timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
KeAcquireDispatcherDatabaseLock(FALSE);
|
KeAcquireDispatcherDatabaseLock(FALSE);
|
||||||
|
|
||||||
for (i = 0; i < Count; i++)
|
for (i = 0; i < Count; i++)
|
||||||
|
@ -525,11 +530,6 @@ KeWaitForMultipleObjects (
|
||||||
return(STATUS_WAIT_0);
|
return(STATUS_WAIT_0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Timeout != NULL)
|
|
||||||
{
|
|
||||||
KeAddThreadTimeout(CurrentThread,Timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Append wait block to the KTHREAD wait block list */
|
/* Append wait block to the KTHREAD wait block list */
|
||||||
CurrentThread->WaitBlockList = blk;
|
CurrentThread->WaitBlockList = blk;
|
||||||
|
|
||||||
|
@ -550,8 +550,8 @@ KeWaitForMultipleObjects (
|
||||||
DPRINT("blk %p blk->NextWaitBlock %p\n",
|
DPRINT("blk %p blk->NextWaitBlock %p\n",
|
||||||
blk, blk->NextWaitBlock);
|
blk, blk->NextWaitBlock);
|
||||||
InsertTailList(&(hdr->WaitListHead),&(blk->WaitListEntry));
|
InsertTailList(&(hdr->WaitListHead),&(blk->WaitListEntry));
|
||||||
// DPRINT("hdr->WaitListHead.Flink %x hdr->WaitListHead.Blink %x\n",
|
// DPRINT("hdr->WaitListHead.Flink %x hdr->WaitListHead.Blink %x\n",
|
||||||
// hdr->WaitListHead.Flink,hdr->WaitListHead.Blink);
|
// hdr->WaitListHead.Flink,hdr->WaitListHead.Blink);
|
||||||
|
|
||||||
blk = blk->NextWaitBlock;
|
blk = blk->NextWaitBlock;
|
||||||
}
|
}
|
||||||
|
@ -564,7 +564,7 @@ KeWaitForMultipleObjects (
|
||||||
&Status,
|
&Status,
|
||||||
Alertable,
|
Alertable,
|
||||||
WaitMode);
|
WaitMode);
|
||||||
|
} while( Status == STATUS_KERNEL_APC );
|
||||||
if (Timeout != NULL)
|
if (Timeout != NULL)
|
||||||
KeCancelTimer(&KeGetCurrentThread()->Timer);
|
KeCancelTimer(&KeGetCurrentThread()->Timer);
|
||||||
DPRINT("Returning from KeWaitForMultipleObjects()\n");
|
DPRINT("Returning from KeWaitForMultipleObjects()\n");
|
||||||
|
|
Loading…
Reference in a new issue