mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-11 15:40:51 +00:00
Fix memory leak in cellOskDialog (#10895)
This commit is contained in:
parent
38d5f688b3
commit
17a074e1ac
@ -166,9 +166,8 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr<CellOskDialogParam> dia
|
||||
{
|
||||
if (auto ccb = g_fxo->get<osk_info>().osk_confirm_callback.exchange({}))
|
||||
{
|
||||
vm::ptr<u16> string_to_send = vm::cast(vm::alloc(CELL_OSKDIALOG_STRING_SIZE * 2, vm::main));
|
||||
std::vector<u16> string_to_send(CELL_OSKDIALOG_STRING_SIZE);
|
||||
atomic_t<bool> done = false;
|
||||
u32 return_value;
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < CELL_OSKDIALOG_STRING_SIZE - 1; i++)
|
||||
@ -177,14 +176,16 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr<CellOskDialogParam> dia
|
||||
if (osk->osk_text[i] == 0) break;
|
||||
}
|
||||
|
||||
sysutil_register_cb([&, length = i](ppu_thread& cb_ppu) -> s32
|
||||
sysutil_register_cb([&, length = i, string_to_send = std::move(string_to_send)](ppu_thread& cb_ppu) -> s32
|
||||
{
|
||||
return_value = ccb(cb_ppu, string_to_send, static_cast<s32>(length));
|
||||
vm::var<u16[], vm::page_allocator<>> string_var(CELL_OSKDIALOG_STRING_SIZE, string_to_send.data());
|
||||
|
||||
const u32 return_value = ccb(cb_ppu, string_var.begin(), static_cast<s32>(length));
|
||||
cellOskDialog.warning("osk_confirm_callback return_value=%d", return_value);
|
||||
|
||||
for (u32 i = 0; i < CELL_OSKDIALOG_STRING_SIZE - 1; i++)
|
||||
{
|
||||
osk->osk_text[i] = string_to_send[i];
|
||||
osk->osk_text[i] = string_var.begin()[i];
|
||||
}
|
||||
|
||||
done = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user