service/am: Correct behavior of CreateTransferMemoryStorage()
For whatever reason, shared memory was being used here instead of transfer memory, which (quite clearly) will not work based off the name of the function. This corrects this wonky usage of shared memory.
This commit is contained in:
parent
140cd5e209
commit
ea8f633dc0
|
@ -13,7 +13,7 @@
|
||||||
#include "core/hle/kernel/kernel.h"
|
#include "core/hle/kernel/kernel.h"
|
||||||
#include "core/hle/kernel/process.h"
|
#include "core/hle/kernel/process.h"
|
||||||
#include "core/hle/kernel/readable_event.h"
|
#include "core/hle/kernel/readable_event.h"
|
||||||
#include "core/hle/kernel/shared_memory.h"
|
#include "core/hle/kernel/transfer_memory.h"
|
||||||
#include "core/hle/kernel/writable_event.h"
|
#include "core/hle/kernel/writable_event.h"
|
||||||
#include "core/hle/service/acc/profile_manager.h"
|
#include "core/hle/service/acc/profile_manager.h"
|
||||||
#include "core/hle/service/am/am.h"
|
#include "core/hle/service/am/am.h"
|
||||||
|
@ -907,19 +907,19 @@ void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContex
|
||||||
rp.SetCurrentOffset(3);
|
rp.SetCurrentOffset(3);
|
||||||
const auto handle{rp.Pop<Kernel::Handle>()};
|
const auto handle{rp.Pop<Kernel::Handle>()};
|
||||||
|
|
||||||
const auto shared_mem =
|
const auto transfer_mem =
|
||||||
Core::System::GetInstance().CurrentProcess()->GetHandleTable().Get<Kernel::SharedMemory>(
|
Core::System::GetInstance().CurrentProcess()->GetHandleTable().Get<Kernel::TransferMemory>(
|
||||||
handle);
|
handle);
|
||||||
|
|
||||||
if (shared_mem == nullptr) {
|
if (transfer_mem == nullptr) {
|
||||||
LOG_ERROR(Service_AM, "shared_mem is a nullpr for handle={:08X}", handle);
|
LOG_ERROR(Service_AM, "shared_mem is a nullpr for handle={:08X}", handle);
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(ResultCode(-1));
|
rb.Push(ResultCode(-1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8* mem_begin = shared_mem->GetPointer();
|
const u8* const mem_begin = transfer_mem->GetPointer();
|
||||||
const u8* mem_end = mem_begin + shared_mem->GetSize();
|
const u8* const mem_end = mem_begin + transfer_mem->GetSize();
|
||||||
std::vector<u8> memory{mem_begin, mem_end};
|
std::vector<u8> memory{mem_begin, mem_end};
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
|
|
Reference in New Issue