diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 5e202ef373..2fad5451b6 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1981,7 +1981,7 @@ pid_t Process::sys$waitpid(pid_t waitee, int* wstatus, int options) if (wstatus && !validate_write_typed(wstatus)) return -EFAULT; - int exit_status; + int exit_status = 0; { InterruptDisabler disabler; @@ -2001,8 +2001,6 @@ pid_t Process::sys$waitpid(pid_t waitee, int* wstatus, int options) } return IterationDecision::Continue; }); - if (wstatus) - copy_to_user(wstatus, &exit_status, sizeof(exit_status)); return reaped_pid; } else { ASSERT(waitee > 0); // FIXME: Implement other PID specs. @@ -2036,6 +2034,9 @@ pid_t Process::sys$waitpid(pid_t waitee, int* wstatus, int options) ASSERT(waitee_process->any_thread().state() == Thread::State::Stopped); exit_status = 0x7f; } + + if (wstatus) + copy_to_user(wstatus, &exit_status, sizeof(exit_status)); return waitee_pid; }