diff options
| author | 2018-03-16 18:24:29 -0400 | |
|---|---|---|
| committer | 2018-03-16 18:32:25 -0400 | |
| commit | e9a857ce82e85c3933f6ce3140ba366e932db386 (patch) | |
| tree | f40d3990e9194180d378c1d25a484d9be93e96f5 /src/core/hle/kernel/process.cpp | |
| parent | arm_interface: Support unmapping previously mapped memory. (diff) | |
| download | yuzu-e9a857ce82e85c3933f6ce3140ba366e932db386.tar.gz yuzu-e9a857ce82e85c3933f6ce3140ba366e932db386.tar.xz yuzu-e9a857ce82e85c3933f6ce3140ba366e932db386.zip | |
process: Unmap previously allocated heap.
Diffstat (limited to 'src/core/hle/kernel/process.cpp')
| -rw-r--r-- | src/core/hle/kernel/process.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index 5711b5247..c1a883b3c 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp | |||
| @@ -183,6 +183,8 @@ ResultVal<VAddr> Process::HeapAllocate(VAddr target, u64 size, VMAPermission per | |||
| 183 | // Initialize heap | 183 | // Initialize heap |
| 184 | heap_memory = std::make_shared<std::vector<u8>>(); | 184 | heap_memory = std::make_shared<std::vector<u8>>(); |
| 185 | heap_start = heap_end = target; | 185 | heap_start = heap_end = target; |
| 186 | } else { | ||
| 187 | vm_manager.UnmapRange(heap_start, heap_end - heap_start); | ||
| 186 | } | 188 | } |
| 187 | 189 | ||
| 188 | // If necessary, expand backing vector to cover new heap extents. | 190 | // If necessary, expand backing vector to cover new heap extents. |
| @@ -202,7 +204,7 @@ ResultVal<VAddr> Process::HeapAllocate(VAddr target, u64 size, VMAPermission per | |||
| 202 | size, MemoryState::Heap)); | 204 | size, MemoryState::Heap)); |
| 203 | vm_manager.Reprotect(vma, perms); | 205 | vm_manager.Reprotect(vma, perms); |
| 204 | 206 | ||
| 205 | heap_used += size; | 207 | heap_used = size; |
| 206 | memory_region->used += size; | 208 | memory_region->used += size; |
| 207 | 209 | ||
| 208 | return MakeResult<VAddr>(heap_end - size); | 210 | return MakeResult<VAddr>(heap_end - size); |