Module: wine Branch: master Commit: f62b9d69ae06df67cce3e0b6d7eb2a5470470290 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f62b9d69ae06df67cce3e0b6d7...
Author: Jacek Caban jacek@codeweavers.com Date: Mon May 22 16:03:46 2017 +0200
rpcrt4: Simplify rpcrt4_conn_np_write implementation.
There is no need for the loop. Named pipes always do complete writes. Also use NtWriteFile like we do for reading to not mess with GetLastError().
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/rpcrt4/rpc_transport.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c index 60975ca..bc2f4a3 100644 --- a/dlls/rpcrt4/rpc_transport.c +++ b/dlls/rpcrt4/rpc_transport.c @@ -429,24 +429,18 @@ static int rpcrt4_conn_np_read(RpcConnection *Connection, return count; }
-static int rpcrt4_conn_np_write(RpcConnection *Connection, - const void *buffer, unsigned int count) +static int rpcrt4_conn_np_write(RpcConnection *conn, const void *buffer, unsigned int count) { - RpcConnection_np *npc = (RpcConnection_np *) Connection; - const char *buf = buffer; - BOOL ret = TRUE; - unsigned int bytes_left = count; + RpcConnection_np *connection = (RpcConnection_np *) conn; + IO_STATUS_BLOCK io_status; + NTSTATUS status;
- while (bytes_left) - { - DWORD bytes_written; - ret = WriteFile(npc->pipe, buf, bytes_left, &bytes_written, NULL); - if (!ret || !bytes_written) - break; - bytes_left -= bytes_written; - buf += bytes_written; - } - return ret ? count : -1; + status = NtWriteFile(connection->pipe, NULL, NULL, NULL, &io_status, buffer, count, NULL, NULL); + if (status) + return -1; + + assert(io_status.Information == count); + return count; }
static int rpcrt4_conn_np_close(RpcConnection *Connection)