Fix the check for an empty list. Modified: trunk/reactos/ntoskrnl/ke/apc.c _____
Modified: trunk/reactos/ntoskrnl/ke/apc.c --- trunk/reactos/ntoskrnl/ke/apc.c 2006-01-15 08:49:26 UTC (rev 20883) +++ trunk/reactos/ntoskrnl/ke/apc.c 2006-01-15 08:51:20 UTC (rev 20884) @@ -287,6 +287,8 @@
PKAPC QueuedApc; NTSTATUS Status;
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); + /* Acquire the lock (only needed on MP) */ KeAcquireSpinLockAtDpcLevel(&Thread->ApcQueueLock);
@@ -790,7 +792,7 @@ ApcListEntry = Thread->ApcState.ApcListHead[UserMode].Flink;
/* Is it empty now? */ - if (!ApcListEntry) + if (ApcListEntry == &Thread->ApcState.ApcListHead[UserMode]) { /* Release the lock and return */ KeReleaseSpinLock(&Thread->ApcQueueLock, OldIrql);