- Fixed the wrong check for KMUTEX objects in KeRundownThread. - Fixed the endless loop in KeRundownThread. Modified: trunk/reactos/ntoskrnl/ke/kthread.c _____
Modified: trunk/reactos/ntoskrnl/ke/kthread.c --- trunk/reactos/ntoskrnl/ke/kthread.c 2005-03-26 17:52:32 UTC (rev 14334) +++ trunk/reactos/ntoskrnl/ke/kthread.c 2005-03-26 20:14:06 UTC (rev 14335) @@ -355,12 +355,12 @@
/* Lock the Dispatcher Database */ OldIrql = KeAcquireDispatcherDatabaseLock();
- CurrentEntry = Thread->MutantListHead.Flink; - while (CurrentEntry != &Thread->MutantListHead) { + while (!IsListEmpty(&Thread->MutantListHead)) {
/* Get the Mutant */ + CurrentEntry = RemoveHeadList(&Thread->MutantListHead); Mutant = CONTAINING_RECORD(CurrentEntry, KMUTANT, MutantListEntry); - ASSERT(Mutant->ApcDisable); + ASSERT(Mutant->ApcDisable == 0);
/* Uncondtionally abandon it */ DPRINT("Abandonning the Mutant\n");