mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-04 18:47:07 +00:00
ntdll: Always fill the 32-bit iosb for overlapped handles, in set_async_direct_result().
This commit is contained in:
parent
193fc028d2
commit
5125f9d5af
|
@ -5484,7 +5484,7 @@ static void add_completion( HANDLE handle, ULONG_PTR value, NTSTATUS status, ULO
|
|||
}
|
||||
|
||||
/* notify direct completion of async and close the wait handle if it is no longer needed */
|
||||
void set_async_direct_result( HANDLE *async_handle, IO_STATUS_BLOCK *io,
|
||||
void set_async_direct_result( HANDLE *async_handle, unsigned int options, IO_STATUS_BLOCK *io,
|
||||
NTSTATUS status, ULONG_PTR information, BOOL mark_pending )
|
||||
{
|
||||
unsigned int ret;
|
||||
|
@ -5493,10 +5493,7 @@ void set_async_direct_result( HANDLE *async_handle, IO_STATUS_BLOCK *io,
|
|||
assert( *async_handle );
|
||||
|
||||
if (!NT_ERROR(status) && status != STATUS_PENDING)
|
||||
{
|
||||
io->Status = status;
|
||||
io->Information = information;
|
||||
}
|
||||
set_sync_iosb( io, status, information, options );
|
||||
|
||||
SERVER_START_REQ( set_async_direct_result )
|
||||
{
|
||||
|
|
|
@ -1203,12 +1203,12 @@ static NTSTATUS wait_on( HANDLE handle, int fd, HANDLE event, PIO_APC_ROUTINE ap
|
|||
{
|
||||
status = STATUS_SUCCESS;
|
||||
*out_buffer = events;
|
||||
set_async_direct_result( &wait_handle, io, STATUS_SUCCESS, sizeof(events), FALSE );
|
||||
set_async_direct_result( &wait_handle, options, io, STATUS_SUCCESS, sizeof(events), FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
status = STATUS_PENDING;
|
||||
set_async_direct_result( &wait_handle, io, STATUS_PENDING, 0, TRUE );
|
||||
set_async_direct_result( &wait_handle, options, io, STATUS_PENDING, 0, TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -875,7 +875,7 @@ static NTSTATUS sock_recv( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
|
|||
status = try_recv( fd, async, &information );
|
||||
if (status == STATUS_DEVICE_NOT_READY && (force_async || !nonblocking))
|
||||
status = STATUS_PENDING;
|
||||
set_async_direct_result( &wait_handle, io, status, information, FALSE );
|
||||
set_async_direct_result( &wait_handle, options, io, status, information, FALSE );
|
||||
}
|
||||
|
||||
if (status != STATUS_PENDING)
|
||||
|
@ -1131,7 +1131,7 @@ static NTSTATUS sock_send( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
|
|||
if (status == STATUS_DEVICE_NOT_READY && async->sent_len)
|
||||
status = STATUS_SUCCESS;
|
||||
|
||||
set_async_direct_result( &wait_handle, io, status, async->sent_len, FALSE );
|
||||
set_async_direct_result( &wait_handle, options, io, status, async->sent_len, FALSE );
|
||||
}
|
||||
|
||||
if (status != STATUS_PENDING)
|
||||
|
@ -1387,7 +1387,7 @@ static NTSTATUS sock_transmit( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc,
|
|||
status = STATUS_PENDING;
|
||||
|
||||
information = async->head_cursor + async->file_cursor + async->tail_cursor;
|
||||
set_async_direct_result( &wait_handle, io, status, information, TRUE );
|
||||
set_async_direct_result( &wait_handle, options, io, status, information, TRUE );
|
||||
}
|
||||
|
||||
if (status != STATUS_PENDING)
|
||||
|
|
|
@ -356,7 +356,7 @@ extern void init_files(void);
|
|||
extern void init_cpu_info(void);
|
||||
extern void file_complete_async( HANDLE handle, unsigned int options, HANDLE event, PIO_APC_ROUTINE apc, void *apc_user,
|
||||
IO_STATUS_BLOCK *io, NTSTATUS status, ULONG_PTR information );
|
||||
extern void set_async_direct_result( HANDLE *async_handle, IO_STATUS_BLOCK *io,
|
||||
extern void set_async_direct_result( HANDLE *async_handle, unsigned int options, IO_STATUS_BLOCK *io,
|
||||
NTSTATUS status, ULONG_PTR information, BOOL mark_pending );
|
||||
|
||||
extern NTSTATUS unixcall_wine_dbg_write( void *args );
|
||||
|
|
Loading…
Reference in a new issue