diff --git a/core/libs/prx/libkernel/System/src/Process.cpp b/core/libs/prx/libkernel/System/src/Process.cpp index 50a58ca22..32019c4bd 100644 --- a/core/libs/prx/libkernel/System/src/Process.cpp +++ b/core/libs/prx/libkernel/System/src/Process.cpp @@ -287,6 +287,10 @@ int APS5_VABI waitpid_nid_postfix(int pid, int* status, int options) { return -1; } +int APS5_VABI wait_nid_postfix(int* status) { + return waitpid_nid_postfix(-1, status, 0); +} + int APS5_VABI execvp_nid_postfix(const char* file, char* const* arguments) { (void)file; (void)arguments; diff --git a/core/libs/tests/GuestWaitpid.cpp b/core/libs/tests/GuestWaitpid.cpp index 235c57d91..8ef90e7b1 100644 --- a/core/libs/tests/GuestWaitpid.cpp +++ b/core/libs/tests/GuestWaitpid.cpp @@ -2,6 +2,7 @@ #include #include extern "C" { +int APS5_VABI wait_nid_postfix(int*); int APS5_VABI waitpid_nid_postfix(int, int*, int); int APS5_VABI getpid_nid_postfix(void); int* APS5_VABI __error_nid_postfix(); @@ -28,4 +29,12 @@ int main() { for (int options : {0x40, 0x41, 0x80, 0x100, 0x40000000, static_cast(0x80000040u), static_cast(0xffffffffu)}) RequireFailure(pid, options, invalidArgument); } + int status = untouched; + *__error_nid_postfix() = invalidArgument; + Require(wait_nid_postfix(&status) == -1); + Require(*__error_nid_postfix() == noChild); + Require(status == untouched); + *__error_nid_postfix() = invalidArgument; + Require(wait_nid_postfix(nullptr) == -1); + Require(*__error_nid_postfix() == noChild); }