Module: wine Branch: master Commit: 6ffe08459fe52e959e30b8a6a3c817611dfcec5f URL: http://source.winehq.org/git/wine.git/?a=commit;h=6ffe08459fe52e959e30b8a6a3...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Dec 1 12:10:47 2016 +0100
server: Cancel process asyncs on process termination.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
server/async.c | 5 +++++ server/file.h | 1 + server/process.c | 1 + 3 files changed, 7 insertions(+)
diff --git a/server/async.c b/server/async.c index 5acd1e7..70ebf95 100644 --- a/server/async.c +++ b/server/async.c @@ -369,6 +369,11 @@ restart: return woken; }
+void cancel_process_asyncs( struct process *process ) +{ + cancel_async( process, NULL, NULL, 0 ); +} + /* wake up async operations on the queue */ void async_wake_up( struct async_queue *queue, unsigned int status ) { diff --git a/server/file.h b/server/file.h index 19e638e..fb2e905 100644 --- a/server/file.h +++ b/server/file.h @@ -175,6 +175,7 @@ extern void async_terminate( struct async *async, unsigned int status ); extern void async_wake_up( struct async_queue *queue, unsigned int status ); extern struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key ); extern void fd_copy_completion( struct fd *src, struct fd *dst ); +extern void cancel_process_asyncs( struct process *process );
/* access rights that require Unix read permission */ #define FILE_UNIX_READ_ACCESS (FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA) diff --git a/server/process.c b/server/process.c index cca18e9..e9e2f21 100644 --- a/server/process.c +++ b/server/process.c @@ -840,6 +840,7 @@ static void process_killed( struct process *process ) process->winstation = 0; process->desktop = 0; close_process_handles( process ); + cancel_process_asyncs( process ); if (process->idle_event) { release_object( process->idle_event );