Fixed bug 5168 - Memory leak in RAWINPUT_JoystickOpen meyraud705 Variable 'hwdata' is not freed in RAWINPUT_JoystickOpen if device->driver->OpenJoystick() fails.
diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c
index 4134e4c..9d752bf 100644
--- a/src/joystick/windows/SDL_rawinputjoystick.c
+++ b/src/joystick/windows/SDL_rawinputjoystick.c
@@ -592,8 +592,8 @@ RAWINPUT_JoystickOpen(SDL_Joystick * joystick, int device_index)
}
if (!device->driver->OpenJoystick(&device->hiddevice, joystick)) {
- /* Only possible error is out of memory */
- return SDL_OutOfMemory();
+ SDL_free(hwdata);
+ return -1;
}
hwdata->reserved = (void*)-1; /* crash if some code slips by that tries to use this */