Dereference the event if the queue is freed in IntDereferenceMessageQueue. Modified: trunk/reactos/subsys/win32k/include/msgqueue.h _____
Modified: trunk/reactos/subsys/win32k/include/msgqueue.h --- trunk/reactos/subsys/win32k/include/msgqueue.h 2005-05-27 14:33:41 UTC (rev 15544) +++ trunk/reactos/subsys/win32k/include/msgqueue.h 2005-05-27 16:28:10 UTC (rev 15545) @@ -239,6 +239,8 @@
if(InterlockedDecrement(&(MsgQueue)->References) == 0) \ { \ DPRINT("Free message queue 0x%x\n", (MsgQueue)); \ + if ((MsgQueue)->NewMessages != NULL) \ + ObDereferenceObject((MsgQueue)->NewMessages); \ if ((MsgQueue)->NewMessagesHandle != NULL) \ ZwClose((MsgQueue)->NewMessagesHandle); \ ExFreePool((MsgQueue)); \