mirror of https://github.com/RPCS3/rpcs3.git
Fix error code checking of sys_lwcond_signal_x
This commit is contained in:
parent
2abbedcc50
commit
777f36e604
|
@ -73,12 +73,17 @@ error_code _sys_lwcond_signal(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u3
|
||||||
fmt::throw_exception("Unknown mode (%d)" HERE, mode);
|
fmt::throw_exception("Unknown mode (%d)" HERE, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
lv2_lwmutex* mutex = nullptr;
|
lv2_lwmutex* mutex;
|
||||||
|
|
||||||
const auto cond = idm::check<lv2_obj, lv2_lwcond>(lwcond_id, [&](lv2_lwcond& cond) -> cpu_thread*
|
const auto cond = idm::check<lv2_obj, lv2_lwcond>(lwcond_id, [&](lv2_lwcond& cond) -> cpu_thread*
|
||||||
{
|
{
|
||||||
mutex = idm::check_unlocked<lv2_obj, lv2_lwmutex>(lwmutex_id);
|
mutex = idm::check_unlocked<lv2_obj, lv2_lwmutex>(lwmutex_id);
|
||||||
|
|
||||||
|
if (!mutex)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (cond.waiters)
|
if (cond.waiters)
|
||||||
{
|
{
|
||||||
std::lock_guard lock(cond.mutex);
|
std::lock_guard lock(cond.mutex);
|
||||||
|
@ -127,7 +132,7 @@ error_code _sys_lwcond_signal(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u3
|
||||||
return nullptr;
|
return nullptr;
|
||||||
});
|
});
|
||||||
|
|
||||||
if ((lwmutex_id && !mutex) || !cond)
|
if (!mutex || !cond)
|
||||||
{
|
{
|
||||||
return CELL_ESRCH;
|
return CELL_ESRCH;
|
||||||
}
|
}
|
||||||
|
@ -166,12 +171,17 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id
|
||||||
|
|
||||||
std::basic_string<cpu_thread*> threads;
|
std::basic_string<cpu_thread*> threads;
|
||||||
|
|
||||||
lv2_lwmutex* mutex = nullptr;
|
lv2_lwmutex* mutex;
|
||||||
|
|
||||||
const auto cond = idm::check<lv2_obj, lv2_lwcond>(lwcond_id, [&](lv2_lwcond& cond) -> u32
|
const auto cond = idm::check<lv2_obj, lv2_lwcond>(lwcond_id, [&](lv2_lwcond& cond) -> u32
|
||||||
{
|
{
|
||||||
mutex = idm::check_unlocked<lv2_obj, lv2_lwmutex>(lwmutex_id);
|
mutex = idm::check_unlocked<lv2_obj, lv2_lwmutex>(lwmutex_id);
|
||||||
|
|
||||||
|
if (!mutex)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (cond.waiters)
|
if (cond.waiters)
|
||||||
{
|
{
|
||||||
std::lock_guard lock(cond.mutex);
|
std::lock_guard lock(cond.mutex);
|
||||||
|
@ -207,7 +217,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
if ((lwmutex_id && !mutex) || !cond)
|
if (!mutex || !cond)
|
||||||
{
|
{
|
||||||
return CELL_ESRCH;
|
return CELL_ESRCH;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue