]> git.saurik.com Git - wxWidgets.git/commitdiff
cleaned up the waitpid() result processing mess
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 1 Oct 2001 12:39:42 +0000 (12:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 1 Oct 2001 12:39:42 +0000 (12:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/unix/utilsunx.cpp

index b246d08f7ae257eedbf53ad3c1ec9b535623812a..888eb203af989ca0f980371c487d092afde95596 100644 (file)
@@ -298,52 +298,28 @@ void wxHandleProcessTermination(wxEndProcessData *proc_data)
     }
     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,
-        // so commenting out for now.
-        //wxLogSysError(_("Waiting for subprocess termination failed (return code = -1)"));
+        proc_data->process->OnTerminate
+                            (
+                                proc_data->pid,
+                                (rc == 0) && WIFEXITED(status)
+                                    ? WEXITSTATUS(status)
+                                    : -1
+                            );
     }
-    else if (! (WIFEXITED(status)))
-    {
-        wxLogSysError(_("Waiting for subprocess termination failed (WIFEXITED returned zero)"));
-       
-       /* 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))
+    // clean up
+    if ( proc_data->pid > 0 )
     {
-        wxLogSysError(_("Waiting for subprocess termination failed (signal not caught)"));
-       
-       /* 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)
-       */
+       delete proc_data;
     }
-    // else
+    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;
+       // wxExecute() will know about it
+       proc_data->exitcode = status;
 
-           proc_data->pid = 0;
-        }
+       proc_data->pid = 0;
     }
 }