diff --git a/reactos/sdk/lib/drivers/ip/network/receive.c b/reactos/sdk/lib/drivers/ip/network/receive.c index eb2ece33b80..15876e494b1 100644 --- a/reactos/sdk/lib/drivers/ip/network/receive.c +++ b/reactos/sdk/lib/drivers/ip/network/receive.c @@ -489,21 +489,23 @@ VOID IPFreeReassemblyList( */ { KIRQL OldIrql; - PLIST_ENTRY CurrentEntry; + PLIST_ENTRY CurrentEntry, NextEntry; PIPDATAGRAM_REASSEMBLY Current; TcpipAcquireSpinLock(&ReassemblyListLock, &OldIrql); CurrentEntry = ReassemblyListHead.Flink; while (CurrentEntry != &ReassemblyListHead) { - Current = CONTAINING_RECORD(CurrentEntry, IPDATAGRAM_REASSEMBLY, ListEntry); + NextEntry = CurrentEntry->Flink; + Current = CONTAINING_RECORD(CurrentEntry, IPDATAGRAM_REASSEMBLY, ListEntry); + /* Unlink it from the list */ RemoveEntryList(CurrentEntry); /* And free the descriptor */ FreeIPDR(Current); - CurrentEntry = CurrentEntry->Flink; + CurrentEntry = NextEntry; } TcpipReleaseSpinLock(&ReassemblyListLock, OldIrql);