aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/memory.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2016-05-14 11:24:19 -0500
committerSubv <subv2112@gmail.com>2016-05-14 11:24:19 -0500
commit057cc2f94f949d1e3832a30493665f93f3f5d830 (patch)
treee70bdacfb80ef0fc70e1ad53f4dd63f6d82e7c8e /src/core/hle/kernel/memory.cpp
parent8ac23ace8257ef231bd750e652254fd2a44bd090 (diff)
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
Diffstat (limited to 'src/core/hle/kernel/memory.cpp')
-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 4be20db22d..17ae87aef1 100644
--- a/src/core/hle/kernel/memory.cpp
+++ b/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;
}