summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Subv2016-05-14 11:24:19 -0500
committerGravatar Subv2016-05-14 11:24:19 -0500
commit64da2bf0cddd885968fd62b65610aff640166a92 (patch)
treee70bdacfb80ef0fc70e1ad53f4dd63f6d82e7c8e
parentMerge pull request #1689 from Subv/shmem (diff)
downloadyuzu-64da2bf0cddd885968fd62b65610aff640166a92.tar.gz
yuzu-64da2bf0cddd885968fd62b65610aff640166a92.tar.xz
yuzu-64da2bf0cddd885968fd62b65610aff640166a92.zip
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
-rw-r--r--src/core/hle/kernel/memory.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/hle/kernel/memory.cpp b/src/core/hle/kernel/memory.cpp
index 4be20db22..17ae87aef 100644
--- a/src/core/hle/kernel/memory.cpp
+++ b/src/core/hle/kernel/memory.cpp
@@ -55,6 +55,9 @@ void MemoryInit(u32 mem_type) {
55 memory_regions[i].size = memory_region_sizes[mem_type][i]; 55 memory_regions[i].size = memory_region_sizes[mem_type][i];
56 memory_regions[i].used = 0; 56 memory_regions[i].used = 0;
57 memory_regions[i].linear_heap_memory = std::make_shared<std::vector<u8>>(); 57 memory_regions[i].linear_heap_memory = std::make_shared<std::vector<u8>>();
58 // Reserve enough space for this region of FCRAM.
59 // We do not want this block of memory to be relocated when allocating from it.
60 memory_regions[i].linear_heap_memory->reserve(memory_regions[i].size);
58 61
59 base += memory_regions[i].size; 62 base += memory_regions[i].size;
60 } 63 }