mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-11 01:08:39 +12:00
Fix memory leak in cellOskDialog (#10895)
This commit is contained in:
parent
38d5f688b3
commit
17a074e1ac
1 changed files with 6 additions and 5 deletions
|
@ -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({}))
|
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;
|
atomic_t<bool> done = false;
|
||||||
u32 return_value;
|
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
for (i = 0; i < CELL_OSKDIALOG_STRING_SIZE - 1; 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;
|
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);
|
cellOskDialog.warning("osk_confirm_callback return_value=%d", return_value);
|
||||||
|
|
||||||
for (u32 i = 0; i < CELL_OSKDIALOG_STRING_SIZE - 1; i++)
|
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;
|
done = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue