Просмотр исходного кода

Memory: Fixed a regression caused by #1695 and #1689.

Reserve enough space in the vector that holds the linear heap memory to prevent relocations of the backing memory when growing too much.

Closes #1790
Subv 10 лет назад
Родитель
Сommit
64da2bf0cd
1 измененных файлов с 3 добавлено и 0 удалено
  1. 3 0
      src/core/hle/kernel/memory.cpp

+ 3 - 0
src/core/hle/kernel/memory.cpp

@@ -55,6 +55,9 @@ void MemoryInit(u32 mem_type) {
         memory_regions[i].size = memory_region_sizes[mem_type][i];
         memory_regions[i].used = 0;
         memory_regions[i].linear_heap_memory = std::make_shared<std::vector<u8>>();
+        // Reserve enough space for this region of FCRAM.
+        // We do not want this block of memory to be relocated when allocating from it.
+        memory_regions[i].linear_heap_memory->reserve(memory_regions[i].size);
 
         base += memory_regions[i].size;
     }