If a process is hung and doesn't respond to termination, a Kill() call must still try to actually kill the process. In the current code, unsuccessful termination would still set the state, preventing Kill() from actually working
Signed-off-by: Peter Hutterer <[email protected]> --- src/process.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/process.cpp b/src/process.cpp index 555e56b..abd107d 100644 --- a/src/process.cpp +++ b/src/process.cpp @@ -158,8 +158,6 @@ bool xorg::testing::Process::WaitForExit(unsigned int timeout) { } bool xorg::testing::Process::KillSelf(int signal, unsigned int timeout) { - bool wait_success = true; - enum State state = GetState(); switch (state) { case FINISHED_SUCCESS: @@ -184,12 +182,17 @@ bool xorg::testing::Process::KillSelf(int signal, unsigned int timeout) { d_->state = ERROR; return false; } - if (timeout > 0) + if (timeout > 0) { + bool wait_success = true; + wait_success = WaitForExit(timeout); + if (!wait_success) + return false; + } d_->pid = -1; } d_->state = TERMINATED; - return wait_success; + return true; } bool xorg::testing::Process::Terminate(unsigned int timeout) { -- 1.7.11.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
