Author: ekohl Date: Mon Jun 29 20:29:19 2015 New Revision: 68315 URL: http://svn.reactos.org/svn/reactos?rev=68315&view=rev Log: [NTOSKRNL] Fix CmpDestroyHiveViewList adding checks for empty lists.
Thank you very much Thomas! Modified: trunk/reactos/ntoskrnl/config/cmmapvw.c Modified: trunk/reactos/ntoskrnl/config/cmmapvw.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmmapvw.c?rev=68315&r1=68314&r2=68315&view=diff ============================================================================== --- trunk/reactos/ntoskrnl/config/cmmapvw.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/config/cmmapvw.c [iso-8859-1] Mon Jun 29 20:29:19 2015 @@ -34,7 +34,6 @@ NTAPI CmpDestroyHiveViewList(IN PCMHIVE Hive) { -#if 0 PCM_VIEW_OF_FILE CmView; PLIST_ENTRY EntryList; @@ -42,9 +41,10 @@ ASSERT(Hive->Hive.ReadOnly == FALSE); /* Free all the views inside the Pinned View List */ - EntryList = RemoveHeadList(&Hive->PinViewListHead); - while (EntryList != &Hive->PinViewListHead) + while (!IsListEmpty(&Hive->PinViewListHead)) { + EntryList = RemoveHeadList(&Hive->PinViewListHead); + CmView = CONTAINING_RECORD(EntryList, CM_VIEW_OF_FILE, PinViewList); /* FIXME: Unmap the view if it is mapped */ @@ -52,8 +52,6 @@ ExFreePool(CmView); Hive->PinnedViews--; - - EntryList = RemoveHeadList(&Hive->PinViewListHead); } /* The Pinned View List should be empty */ @@ -61,9 +59,10 @@ ASSERT(Hive->PinnedViews == 0); /* Now, free all the views inside the LRU View List */ - EntryList = RemoveHeadList(&Hive->LRUViewListHead); - while (EntryList != &Hive->LRUViewListHead) + while (!IsListEmpty(&Hive->LRUViewListHead)) { + EntryList = RemoveHeadList(&Hive->LRUViewListHead); + CmView = CONTAINING_RECORD(EntryList, CM_VIEW_OF_FILE, LRUViewList); /* FIXME: Unmap the view if it is mapped */ @@ -71,14 +70,11 @@ ExFreePool(CmView); Hive->MappedViews--; - - EntryList = RemoveHeadList(&Hive->LRUViewListHead); } /* The LRU View List should be empty */ ASSERT(IsListEmpty(&Hive->LRUViewListHead) == TRUE); ASSERT(Hive->MappedViews == 0); -#endif } /* EOF */