[pkg-wine-party] [SCM] Debian Wine packaging branch, lenny, updated. wine-1.0.0-1-126-gccc5cbd
The following commit has been merged in the lenny branch:
commit 0d2d5fce275e4de10d53a8f6350a4a0b7e23e2b1
Author: Alexandre Julliard <julliard@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
Reply to: