server: Don't check the user data for NULL in async_terminate().

This semantically reverts 481517178f.

That commit was used to implement NtFlushBuffersFile, which at the time didn't
use a callback function. 9050b58f07 changed it to
use irp_completion(), since the result of a blocking flush needed to be taken
from the IOSB.

As of 97afac469f that's not true anymore, but on
the other hand it is theoretically possible for a device driver to touch the
Information member of the IOSB, and we don't seem to lose anything by making
all asyncs take a common path.

Since all asyncs pass user data and there's no clear reason for them not to,
let's get rid of a bit of extra code complexity that's no longer used.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-07-05 11:19:59 -05:00 committed by Alexandre Julliard
parent d888cbcb20
commit 3f04fdd876
1 changed files with 7 additions and 11 deletions

View File

@ -161,18 +161,14 @@ void async_terminate( struct async *async, unsigned int status )
if (!async->direct_result)
{
if (async->data.user)
{
apc_call_t data;
apc_call_t data;
memset( &data, 0, sizeof(data) );
data.type = APC_ASYNC_IO;
data.async_io.user = async->data.user;
data.async_io.sb = async->data.iosb;
data.async_io.status = status;
thread_queue_apc( async->thread->process, async->thread, &async->obj, &data );
}
else async_set_result( &async->obj, STATUS_SUCCESS, 0 );
memset( &data, 0, sizeof(data) );
data.type = APC_ASYNC_IO;
data.async_io.user = async->data.user;
data.async_io.sb = async->data.iosb;
data.async_io.status = status;
thread_queue_apc( async->thread->process, async->thread, &async->obj, &data );
}
async_reselect( async );