|
|
|
@ -104,9 +104,9 @@ ResultCode MemoryManager::Allocate(PageLinkedList& page_list, std::size_t num_pa
|
|
|
|
|
// Ensure that we don't leave anything un-freed
|
|
|
|
|
auto group_guard = detail::ScopeExit([&] {
|
|
|
|
|
for (const auto& it : page_list.Nodes()) {
|
|
|
|
|
const auto num_pages{std::min(
|
|
|
|
|
const auto min_num_pages{std::min(
|
|
|
|
|
it.GetNumPages(), (chosen_manager.GetEndAddress() - it.GetAddress()) / PageSize)};
|
|
|
|
|
chosen_manager.Free(it.GetAddress(), num_pages);
|
|
|
|
|
chosen_manager.Free(it.GetAddress(), min_num_pages);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -165,9 +165,9 @@ ResultCode MemoryManager::Free(PageLinkedList& page_list, std::size_t num_pages,
|
|
|
|
|
|
|
|
|
|
// Free all of the pages
|
|
|
|
|
for (const auto& it : page_list.Nodes()) {
|
|
|
|
|
const auto num_pages{std::min(
|
|
|
|
|
const auto min_num_pages{std::min(
|
|
|
|
|
it.GetNumPages(), (chosen_manager.GetEndAddress() - it.GetAddress()) / PageSize)};
|
|
|
|
|
chosen_manager.Free(it.GetAddress(), num_pages);
|
|
|
|
|
chosen_manager.Free(it.GetAddress(), min_num_pages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return RESULT_SUCCESS;
|
|
|
|
|