diff options
| author | 2020-01-30 22:39:07 -0500 | |
|---|---|---|
| committer | 2020-02-05 23:06:54 -0500 | |
| commit | ba53543da6126b5fe7b3f26e2688272cf11024a3 (patch) | |
| tree | 6056b75468249a9841a0e521d7a381efd087e0f2 /src/core/hle/kernel/svc.cpp | |
| parent | wait_object: Make wait behavior only require one object to signal. (diff) | |
| download | yuzu-ba53543da6126b5fe7b3f26e2688272cf11024a3.tar.gz yuzu-ba53543da6126b5fe7b3f26e2688272cf11024a3.tar.xz yuzu-ba53543da6126b5fe7b3f26e2688272cf11024a3.zip | |
kernel: transfer_memory: Properly reserve and reset memory region.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 1d99bf7a2..9cae5c73d 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -1863,10 +1863,14 @@ static ResultCode CreateTransferMemory(Core::System& system, Handle* handle, VAd | |||
| 1863 | } | 1863 | } |
| 1864 | 1864 | ||
| 1865 | auto& kernel = system.Kernel(); | 1865 | auto& kernel = system.Kernel(); |
| 1866 | auto transfer_mem_handle = TransferMemory::Create(kernel, addr, size, perms); | 1866 | auto transfer_mem_handle = TransferMemory::Create(kernel, system.Memory(), addr, size, perms); |
| 1867 | |||
| 1868 | if (const auto reserve_result{transfer_mem_handle->Reserve()}; reserve_result.IsError()) { | ||
| 1869 | return reserve_result; | ||
| 1870 | } | ||
| 1867 | 1871 | ||
| 1868 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); | 1872 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); |
| 1869 | const auto result = handle_table.Create(std::move(transfer_mem_handle)); | 1873 | const auto result{handle_table.Create(std::move(transfer_mem_handle))}; |
| 1870 | if (result.Failed()) { | 1874 | if (result.Failed()) { |
| 1871 | return result.Code(); | 1875 | return result.Code(); |
| 1872 | } | 1876 | } |