diff options
author | Subv <subv2112@gmail.com> | 2016-05-14 11:24:19 -0500 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2016-05-14 11:24:19 -0500 |
commit | 64da2bf0cddd885968fd62b65610aff640166a92 (patch) | |
tree | e70bdacfb80ef0fc70e1ad53f4dd63f6d82e7c8e /src | |
parent | 18b517e236b7f6710567e57dab6a7c5329db948f (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')
-rw-r--r-- | src/core/hle/kernel/memory.cpp | 3 |
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) { 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; } |