Free all messages in LpcpDeletePort.
Modified: trunk/reactos/ntoskrnl/lpc/close.c
_____
Modified: trunk/reactos/ntoskrnl/lpc/close.c
--- trunk/reactos/ntoskrnl/lpc/close.c 2005-09-16 15:18:07 UTC (rev
17881)
+++ trunk/reactos/ntoskrnl/lpc/close.c 2005-09-16 15:18:23 UTC (rev
17882)
@@ -87,9 +87,27 @@
VOID STDCALL
LpcpDeletePort (PVOID ObjectBody)
{
- // PEPORT Port = (PEPORT)ObjectBody;
+ PLIST_ENTRY Entry;
+ PQUEUEDMESSAGE Message;
- // DPRINT1("Deleting port %x\n", Port);
+ PEPORT Port = (PEPORT)ObjectBody;
+
+ DPRINT("Deleting port %x\n", Port);
+
+ /* Free all waiting messages */
+ while (!IsListEmpty(&Port->QueueListHead))
+ {
+ Entry = RemoveHeadList(&Port->QueueListHead);
+ Message = CONTAINING_RECORD (Entry, QUEUEDMESSAGE,
QueueListEntry);
+ ExFreePool(Message);
+ }
+
+ while (!IsListEmpty(&Port->ConnectQueueListHead))
+ {
+ Entry = RemoveHeadList(&Port->ConnectQueueListHead);
+ Message = CONTAINING_RECORD (Entry, QUEUEDMESSAGE,
QueueListEntry);
+ ExFreePool(Message);
+ }
}