diff --git a/core/libs/prx/libkernel/System/src/Signals.cpp b/core/libs/prx/libkernel/System/src/Signals.cpp index 4629df138..7967f9129 100644 --- a/core/libs/prx/libkernel/System/src/Signals.cpp +++ b/core/libs/prx/libkernel/System/src/Signals.cpp @@ -559,9 +559,10 @@ int APS5_VABI sigwaitinfo_nid_postfix(const GuestSignalSet* set, void* info) { } int APS5_VABI sigwait_nid_postfix(const GuestSignalSet* set, int* received) { - if (set == nullptr || received == nullptr || !SetHasSignal(*set)) { *__error_nid_postfix() = 22; return -1; } + if (set == nullptr || received == nullptr || !SetHasSignal(*set)) return 22; int guest = 0; - if (WaitForPendingInSet(*set, true, nullptr, &guest) != 0) { *__error_nid_postfix() = GuestEagain; return -1; } + const int result = WaitForPendingInSet(*set, true, nullptr, &guest); + if (result != 0) return result; *received = guest; return 0; } diff --git a/core/libs/tests/GuestSigtimedwait.cpp b/core/libs/tests/GuestSigtimedwait.cpp index 03a9a237b..52a65f57d 100644 --- a/core/libs/tests/GuestSigtimedwait.cpp +++ b/core/libs/tests/GuestSigtimedwait.cpp @@ -95,10 +95,12 @@ int main() { Require(sigwaitinfo_nid_postfix(nullptr, &info) == -1 && *__error_nid_postfix() == 22); *__error_nid_postfix() = 0; Require(sigwaitinfo_nid_postfix(&empty, &info) == -1 && *__error_nid_postfix() == 22); - *__error_nid_postfix() = 0; - Require(sigwait_nid_postfix(&empty, &taken) == -1 && *__error_nid_postfix() == 22 && taken == -1); - *__error_nid_postfix() = 0; - Require(sigwait_nid_postfix(&interrupt, nullptr) == -1 && *__error_nid_postfix() == 22); + *__error_nid_postfix() = 71; + Require(sigwait_nid_postfix(nullptr, &taken) == 22 && *__error_nid_postfix() == 71 && taken == -1); + *__error_nid_postfix() = 72; + Require(sigwait_nid_postfix(&empty, &taken) == 22 && *__error_nid_postfix() == 72 && taken == -1); + *__error_nid_postfix() = 73; + Require(sigwait_nid_postfix(&interrupt, nullptr) == 22 && *__error_nid_postfix() == 73); RequireUntouched(info); *__error_nid_postfix() = 0; Require(sigtimedwait_nid_postfix(&interrupt, &info, &poll) == -1 && *__error_nid_postfix() == 35);