From c4bb72e4ce9c185041bfaefe65ae2c0ee84c2f9e Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Mon, 16 Jun 2003 19:17:45 +0000 Subject: [PATCH] - Decrement the pending apc count while holding the lock in KiDeliverUserApc. - Restart the scanning through the apc list if there was released the lock in KiDeliverApc. svn path=/trunk/; revision=4909 --- reactos/ntoskrnl/ke/apc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/ke/apc.c b/reactos/ntoskrnl/ke/apc.c index b8510790fdc..5de761303ce 100644 --- a/reactos/ntoskrnl/ke/apc.c +++ b/reactos/ntoskrnl/ke/apc.c @@ -166,6 +166,11 @@ KiDeliverUserApc(PKTRAP_FRAME TrapFrame) current_entry = RemoveHeadList(&Thread->ApcState.ApcListHead[1]); Apc = CONTAINING_RECORD(current_entry, KAPC, ApcListEntry); Apc->Inserted = FALSE; + + /* + * We've dealt with one pending user-mode APC + */ + Thread->ApcState.UserApcPending--; KeReleaseSpinLock(&PiApcLock, oldlvl); /* @@ -210,10 +215,6 @@ KiDeliverUserApc(PKTRAP_FRAME TrapFrame) TrapFrame->Eip = (ULONG)LdrpGetSystemDllApcDispatcher(); TrapFrame->Esp = (ULONG)Esp; - /* - * We've dealt with one pending user-mode APC - */ - Thread->ApcState.UserApcPending--; /* * Now call for the kernel routine for the APC, which will free