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)); \