From b9919c2e7f7ac92417cb2d8ed10414b318f03f1e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 7 Aug 2019 21:10:12 -0500 Subject: [PATCH] ntoskrnl.exe: Set the IRP output buffer unless the status has both high bits set. Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/ntoskrnl.exe/ntoskrnl.c | 2 +- dlls/ntoskrnl.exe/tests/ntoskrnl.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 6488e52cc9c..ccc5fce568a 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -439,7 +439,7 @@ static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp, req->handle = wine_server_obj_handle( irp_handle ); req->status = irp->IoStatus.u.Status; req->size = irp->IoStatus.Information; - if (irp->IoStatus.u.Status >= 0) + if (!NT_ERROR(irp->IoStatus.u.Status)) { if (out_buff) wine_server_add_data( req, out_buff, irp->IoStatus.Information ); } diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index e7a8cc987a1..86dce75f29f 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -444,7 +444,7 @@ static void test_return_status(void) sizeof(status), buffer, sizeof(buffer), &ret_size, NULL); ok(!ret, "ioctl succeeded\n"); ok(GetLastError() == ERROR_MR_MID_NOT_FOUND, "got error %u\n", GetLastError()); - todo_wine ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer); + ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer); ok(ret_size == 3, "got size %u\n", ret_size); strcpy(buffer, "abcdef");