Since IDirectInputEffect_Release(obj) is just a macro for (obj)->Release(), the program crashes if the effect we are trying to release is null. This mostly happens when the effect failed to allocate in the first place.
Signed-off-by: Tim Schumacher timschumi@gmx.de --- dlls/joy.cpl/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/joy.cpl/main.c b/dlls/joy.cpl/main.c index 9768917641..06084f3166 100644 --- a/dlls/joy.cpl/main.c +++ b/dlls/joy.cpl/main.c @@ -137,7 +137,8 @@ static void destroy_joysticks(struct JoystickData *data) if (data->joysticks[i].forcefeedback && data->joysticks[i].num_effects > 0) { for (j = 0; j < data->joysticks[i].num_effects; j++) - IDirectInputEffect_Release(data->joysticks[i].effects[j].effect); + if (data->joysticks[i].effects[j].effect) + IDirectInputEffect_Release(data->joysticks[i].effects[j].effect);
HeapFree(GetProcessHeap(), 0, data->joysticks[i].effects); } -- 2.21.0