فهرست منبع

kernel/vm_manager: Handle case of identical calls to HeapAllocate

In cases where HeapAllocate is called with the same size of the current
heap, we can simply do nothing and return successfully.

This avoids doing work where we otherwise don't have to. This is also
what the kernel itself does in this scenario.
Lioncash 7 سال پیش
والد
کامیت
abdb81ccaf
1فایلهای تغییر یافته به همراه5 افزوده شده و 0 حذف شده
  1. 5 0
      src/core/hle/kernel/vm_manager.cpp

+ 5 - 0
src/core/hle/kernel/vm_manager.cpp

@@ -261,6 +261,11 @@ ResultVal<VAddr> VMManager::HeapAllocate(u64 size) {
         return ERR_OUT_OF_MEMORY;
     }
 
+    // No need to do any additional work if the heap is already the given size.
+    if (size == GetCurrentHeapSize()) {
+        return MakeResult(heap_region_base);
+    }
+
     if (heap_memory == nullptr) {
         // Initialize heap
         heap_memory = std::make_shared<std::vector<u8>>(size);