video: Fix memory leak when deleting a video display

The display deletion code would not free the driver data or name if the display index was the last, or only one, in the list.
This commit is contained in:
Frank Praznik
2024-06-21 13:02:36 -04:00
parent 3b88d4f46f
commit 20f1061cc8

View File

@@ -677,9 +677,9 @@ void SDL_DelVideoDisplay(int index)
SDL_SendDisplayEvent(&_this->displays[index], SDL_DISPLAYEVENT_DISCONNECTED, 0);
SDL_free(_this->displays[index].driverdata);
SDL_free(_this->displays[index].name);
if (index < (_this->num_displays - 1)) {
SDL_free(_this->displays[index].driverdata);
SDL_free(_this->displays[index].name);
SDL_memmove(&_this->displays[index], &_this->displays[index + 1], (_this->num_displays - index - 1) * sizeof(_this->displays[index]));
}
--_this->num_displays;