dinput: Cope with NULL flags in LinuxInputEffectImpl_GetEffectStatus

Bruno Jesus 00cpxxx at gmail.com
Thu Aug 18 20:50:13 CDT 2016


Currently the game Fairy Bloom Freesia crashes as soon as the game
starts (menu works fine). After this patch the game is playable.

Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
-------------- next part --------------
diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c
index ad7d3ad..dc12aa6 100644
--- a/dlls/dinput/effect_linuxinput.c
+++ b/dlls/dinput/effect_linuxinput.c
@@ -131,6 +131,9 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetEffectStatus(
 {
     TRACE("(this=%p,%p)\n", iface, pdwFlags);
 
+    if (!pdwFlags)
+        return E_POINTER;
+
     /* linux sends the effect status through an event.
      * that event is trapped by our parent joystick driver
      * and there is no clean way to pass it back to us. */
diff --git a/dlls/dinput/tests/joystick.c b/dlls/dinput/tests/joystick.c
index 77bb729..af36e6d 100644
--- a/dlls/dinput/tests/joystick.c
+++ b/dlls/dinput/tests/joystick.c
@@ -473,6 +473,9 @@ static BOOL CALLBACK EnumJoysticks(const DIDEVICEINSTANCEA *lpddi, void *pvRef)
              * - effects are preserved (Download + Start doesn't complain
              *   about incomplete effect)
              */
+            hr = IDirectInputEffect_GetEffectStatus(effect, NULL);
+            ok(hr==E_POINTER,"IDirectInputEffect_GetEffectStatus() must fail with E_POINTER, got: %08x\n", hr);
+            effect_status = 0xdeadbeef;
             hr = IDirectInputEffect_GetEffectStatus(effect, &effect_status);
             ok(hr==DI_OK,"IDirectInputEffect_GetEffectStatus() failed: %08x\n", hr);
             ok(effect_status==0,"IDirectInputEffect_GetEffectStatus() reported effect as started\n");


More information about the wine-patches mailing list