Rémi Bernon : dinput/tests: Check IDirectInputDevice_EnumObjects error codes.

Alexandre Julliard julliard at winehq.org
Tue May 25 16:08:17 CDT 2021


Module: wine
Branch: master
Commit: ab8e41678704196067de1f5618f4cea62717408a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ab8e41678704196067de1f5618f4cea62717408a

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Tue May 25 18:48:56 2021 +0200

dinput/tests: Check IDirectInputDevice_EnumObjects error codes.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/device.c       | 4 ++++
 dlls/dinput/tests/device.c | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
index 972cfd604c7..c6385e6c025 100644
--- a/dlls/dinput/device.c
+++ b/dlls/dinput/device.c
@@ -1259,6 +1259,8 @@ HRESULT WINAPI IDirectInputDevice2AImpl_EnumObjects(LPDIRECTINPUTDEVICE8A iface,
     _dump_EnumObjects_flags(dwFlags);
     TRACE("\n");
 
+    if (!lpCallback) return DIERR_INVALIDPARAM;
+
     /* Only the fields till dwFFMaxForce are relevant */
     memset(&ddoi, 0, sizeof(ddoi));
     ddoi.dwSize = FIELD_OFFSET(DIDEVICEOBJECTINSTANCEA, dwFFMaxForce);
@@ -1289,6 +1291,8 @@ HRESULT WINAPI IDirectInputDevice2WImpl_EnumObjects(LPDIRECTINPUTDEVICE8W iface,
     _dump_EnumObjects_flags(dwFlags);
     TRACE("\n");
 
+    if (!lpCallback) return DIERR_INVALIDPARAM;
+
     /* Only the fields till dwFFMaxForce are relevant */
     memset(&ddoi, 0, sizeof(ddoi));
     ddoi.dwSize = FIELD_OFFSET(DIDEVICEOBJECTINSTANCEW, dwFFMaxForce);
diff --git a/dlls/dinput/tests/device.c b/dlls/dinput/tests/device.c
index 071fc6de6bb..9be00a671fb 100644
--- a/dlls/dinput/tests/device.c
+++ b/dlls/dinput/tests/device.c
@@ -84,6 +84,9 @@ static void test_object_info(IDirectInputDeviceA *device, HWND hwnd)
     DWORD cnt = 0;
     DIDEVICEOBJECTDATA buffer[5];
 
+    hr = IDirectInputDevice_EnumObjects(device, NULL, &cnt, DIDFT_ALL);
+    ok(hr == DIERR_INVALIDPARAM, "IDirectInputDevice_EnumObjects returned %08x, expected %08x\n", hr, DIERR_INVALIDPARAM);
+
     hr = IDirectInputDevice_EnumObjects(device, enum_callback, &cnt, DIDFT_ALL);
     ok(SUCCEEDED(hr), "EnumObjects() failed: %08x\n", hr);
 




More information about the wine-cvs mailing list