[pkg-wine-party] [SCM] Debian Wine packaging branch, lenny, updated. wine-1.0.0-1-126-gccc5cbd

Alexandre Julliard julliard at winehq.org
Thu Oct 30 14:43:43 UTC 2008


The following commit has been merged in the lenny branch:
commit 0d2d5fce275e4de10d53a8f6350a4a0b7e23e2b1
Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jun 20 20:42:51 2008 +0200

    server: Move the process pipe hangup handling into kill_process.
    
    This ensures that it's also done correctly when a read from the pipe
    returns EOF.
    (cherry picked from commit 24ec4a6ed7bf5c7c8edadc7da3bd5f6160a4d53d)

diff --git a/server/process.c b/server/process.c
index f427716..51ada6e 100644
--- a/server/process.c
+++ b/server/process.c
@@ -459,18 +459,7 @@ static void process_poll_event( struct fd *fd, int event )
     struct process *process = get_fd_user( fd );
     assert( process->obj.ops == &process_ops );
 
-    if (event & (POLLERR | POLLHUP))
-    {
-        release_object( process->msg_fd );
-        process->msg_fd = NULL;
-        if (process->sigkill_timeout)  /* already waiting for it to die */
-        {
-            remove_timeout_user( process->sigkill_timeout );
-            process->sigkill_timeout = NULL;
-            process_died( process );
-        }
-        else kill_process( process, 0 );
-    }
+    if (event & (POLLERR | POLLHUP)) kill_process( process, 0 );
     else if (event & POLLIN) receive_fd( process );
 }
 
@@ -736,6 +725,20 @@ void resume_process( struct process *process )
 /* kill a process on the spot */
 void kill_process( struct process *process, int violent_death )
 {
+    if (!violent_death && process->msg_fd)  /* normal termination on pipe close */
+    {
+        release_object( process->msg_fd );
+        process->msg_fd = NULL;
+    }
+
+    if (process->sigkill_timeout)  /* already waiting for it to die */
+    {
+        remove_timeout_user( process->sigkill_timeout );
+        process->sigkill_timeout = NULL;
+        process_died( process );
+        return;
+    }
+
     if (violent_death) terminate_process( process, NULL, 1 );
     else
     {

-- 
Debian Wine packaging



More information about the pkg-wine-party mailing list