diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c index a2e91a320..de87fbcb8 100644 --- a/src/joystick/hidapi/SDL_hidapijoystick.c +++ b/src/joystick/hidapi/SDL_hidapijoystick.c @@ -616,9 +616,13 @@ HIDAPI_JoystickDisconnected(SDL_HIDAPI_Device *device, SDL_JoystickID joystickID HIDAPI_JoystickClose(joystick); } - SDL_memcpy(&device->joysticks[i], &device->joysticks[i+1], device->num_joysticks - i - 1); + SDL_memmove(&device->joysticks[i], &device->joysticks[i+1], device->num_joysticks - i - 1); --device->num_joysticks; --SDL_HIDAPI_numjoysticks; + if (device->num_joysticks == 0) { + SDL_free(device->joysticks); + device->joysticks = NULL; + } if (!shutting_down) { SDL_PrivateJoystickRemoved(joystickID);