Bruno Jesus : user32: Set the expected errors in GetRawInputDeviceList.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed May 27 09:30:57 CDT 2015
Module: wine
Branch: master
Commit: e0ba6d8fdb9562810231df8fb0b37dd05188e3b8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e0ba6d8fdb9562810231df8fb0b37dd05188e3b8
Author: Bruno Jesus <00cpxxx at gmail.com>
Date: Tue May 26 12:14:29 2015 -0300
user32: Set the expected errors in GetRawInputDeviceList.
---
dlls/user32/input.c | 13 ++++++++++++-
dlls/user32/tests/input.c | 14 ++++++++------
2 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 4fcc531..40e35a9 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -496,7 +496,17 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
{
TRACE("devices %p, device_count %p, size %u.\n", devices, device_count, size);
- if (size != sizeof(*devices) || !device_count) return ~0U;
+ if (size != sizeof(*devices))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return ~0U;
+ }
+
+ if (!device_count)
+ {
+ SetLastError(ERROR_NOACCESS);
+ return ~0U;
+ }
if (!devices)
{
@@ -506,6 +516,7 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
if (*device_count < 2)
{
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
*device_count = 2;
return ~0U;
}
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 7639b66..29b655c 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -1491,21 +1491,19 @@ static void test_GetMouseMovePointsEx(void)
static void test_GetRawInputDeviceList(void)
{
RAWINPUTDEVICELIST devices[32];
- UINT ret, devcount, odevcount;
+ UINT ret, oret, devcount, odevcount;
DWORD err;
SetLastError(0xdeadbeef);
ret = pGetRawInputDeviceList(NULL, NULL, 0);
err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret);
-todo_wine
ok(err == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", err);
SetLastError(0xdeadbeef);
ret = pGetRawInputDeviceList(NULL, NULL, sizeof(devices[0]));
err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret);
-todo_wine
ok(err == ERROR_NOACCESS, "expected 998, got %d\n", err);
devcount = 0;
@@ -1518,19 +1516,23 @@ todo_wine
ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0]));
err = GetLastError();
ok(ret == -1, "expected -1, got %d\n", ret);
-todo_wine
ok(err == ERROR_INSUFFICIENT_BUFFER, "expected 122, got %d\n", err);
ok(devcount > 0, "expected non-zero\n");
- /* devcount contain now the correct number of devices */
+ /* devcount contains now the correct number of devices */
ret = pGetRawInputDeviceList(devices, &devcount, sizeof(devices[0]));
ok(ret > 0, "expected non-zero\n");
/* check if variable changes from larger to smaller value */
devcount = odevcount = sizeof(devices) / sizeof(devices[0]);
- ret = pGetRawInputDeviceList(devices, &odevcount, sizeof(devices[0]));
+ oret = ret = pGetRawInputDeviceList(devices, &odevcount, sizeof(devices[0]));
ok(ret > 0, "expected non-zero\n");
ok(devcount == odevcount, "expected %d, got %d\n", devcount, odevcount);
+ devcount = odevcount;
+ odevcount = sizeof(devices) / sizeof(devices[0]);
+ ret = pGetRawInputDeviceList(NULL, &odevcount, sizeof(devices[0]));
+ ok(ret == 0, "expected 0, got %d\n", ret);
+ ok(odevcount == oret, "expected %d, got %d\n", oret, odevcount);
}
static void test_key_map(void)
More information about the wine-cvs
mailing list