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