cleaned up the waitpid() result processing mess

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-10-01 12:39:42 +00:00
parent dbd25330c5
commit 018e2f1300

View File

@@ -298,52 +298,28 @@ void wxHandleProcessTermination(wxEndProcessData *proc_data)
} }
while ( rc == -1 && errno == EINTR ); while ( rc == -1 && errno == EINTR );
if (rc == -1) // notify user about termination if required
if ( proc_data->process )
{ {
// JACS: this could happen if the process was terminated and waitpid called, proc_data->process->OnTerminate
// so commenting out for now. (
//wxLogSysError(_("Waiting for subprocess termination failed (return code = -1)")); proc_data->pid,
(rc == 0) && WIFEXITED(status)
? WEXITSTATUS(status)
: -1
);
} }
else if (! (WIFEXITED(status))) // clean up
if ( proc_data->pid > 0 )
{ {
wxLogSysError(_("Waiting for subprocess termination failed (WIFEXITED returned zero)")); delete proc_data;
/* AFAIK, this can only happen if something went wrong within
wxGTK, i.e. due to a race condition or some serious bug.
After having fixed the order of statements in
GTK_EndProcessDetector(). (KB)
*/
} }
else if (WIFSIGNALED(status)) else
{ {
wxLogSysError(_("Waiting for subprocess termination failed (signal not caught)")); // wxExecute() will know about it
proc_data->exitcode = status;
/* AFAIK, this can only happen if something went wrong within
wxGTK, i.e. due to a race condition or some serious bug.
After having fixed the order of statements in
GTK_EndProcessDetector(). (KB)
*/
}
// else
{
// notify user about termination if required
if (proc_data->process)
{
proc_data->process->OnTerminate(proc_data->pid,
WEXITSTATUS(status));
}
// clean up
if ( proc_data->pid > 0 )
{
delete proc_data;
}
else
{
// wxExecute() will know about it
proc_data->exitcode = status;
proc_data->pid = 0; proc_data->pid = 0;
}
} }
} }