server: Cancel process asyncs on process termination.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2016-12-01 12:10:47 +01:00 committed by Alexandre Julliard
parent ad1e0609a0
commit 6ffe08459f
3 changed files with 7 additions and 0 deletions

View File

@ -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 )
{

View File

@ -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)

View File

@ -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 );