mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-21 03:55:32 +00:00
Fix sys_event_flag_wait result set (#10404)
Set result upon syscall exit, not at the beginning.
This commit is contained in:
parent
baa422e65b
commit
11ab9b7fa9
1 changed files with 12 additions and 8 deletions
|
@ -102,7 +102,16 @@ error_code sys_event_flag_wait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm
|
|||
ppu.gpr[6] = 0;
|
||||
|
||||
// Always set result
|
||||
if (result) *result = 0;
|
||||
struct store_result
|
||||
{
|
||||
vm::ptr<u64> ptr;
|
||||
u64 val = 0;
|
||||
|
||||
~store_result() noexcept
|
||||
{
|
||||
if (ptr) *ptr = val;
|
||||
}
|
||||
} store{result};
|
||||
|
||||
if (!lv2_event_flag::check_mode(mode))
|
||||
{
|
||||
|
@ -156,7 +165,7 @@ error_code sys_event_flag_wait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm
|
|||
}
|
||||
else
|
||||
{
|
||||
if (result) *result = ppu.gpr[6];
|
||||
store.val = ppu.gpr[6];
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -201,12 +210,7 @@ error_code sys_event_flag_wait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm
|
|||
}
|
||||
}
|
||||
|
||||
if (ppu.test_stopped())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (result) *result = ppu.gpr[6];
|
||||
store.val = ppu.gpr[6];
|
||||
return not_an_error(ppu.gpr[3]);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue