From ab8e41678704196067de1f5618f4cea62717408a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Tue, 25 May 2021 18:48:56 +0200 Subject: [PATCH] dinput/tests: Check IDirectInputDevice_EnumObjects error codes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: RĂ©mi Bernon Signed-off-by: Alexandre Julliard --- 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);