Commit 13204d87 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

server: Choose newer async object when searching from client pointer.

This fixes a race. Client may release and reuse async pointer while processing APC_ASYNC_IO. It is, however, guaranteed that get_async_result will be called on the newest one known to the server. Signed-off-by: 's avatarJacek Caban <jacek@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent e07d20f3
...@@ -255,7 +255,7 @@ struct async *create_async( struct thread *thread, struct async_queue *queue, co ...@@ -255,7 +255,7 @@ struct async *create_async( struct thread *thread, struct async_queue *queue, co
else async->iosb = NULL; else async->iosb = NULL;
list_add_tail( &queue->queue, &async->queue_entry ); list_add_tail( &queue->queue, &async->queue_entry );
list_add_tail( &thread->process->asyncs, &async->process_entry ); list_add_head( &thread->process->asyncs, &async->process_entry );
grab_object( async ); grab_object( async );
if (queue->fd) set_fd_signaled( queue->fd, 0 ); if (queue->fd) set_fd_signaled( queue->fd, 0 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment