diff --git a/src/video/windows/SDL_windowsmodes.c b/src/video/windows/SDL_windowsmodes.c index f6f8f105b5..5868e9a5ed 100644 --- a/src/video/windows/SDL_windowsmodes.c +++ b/src/video/windows/SDL_windowsmodes.c @@ -357,10 +357,19 @@ static void WIN_AddDisplay(SDL_VideoDevice *_this, HMONITOR hMonitor, const MONI SDL_bool moved = (index != i); SDL_bool changed_bounds = SDL_FALSE; + if (driverdata->state != DisplayRemoved) { + /* We've already enumerated this display, don't move it */ + return; + } + + if (index >= _this->num_displays) { + /* This should never happen due to the check above, but just in case... */ + return; + } + if (moved) { SDL_VideoDisplay tmp; - SDL_assert(index < _this->num_displays); SDL_memcpy(&tmp, &_this->displays[index], sizeof(tmp)); SDL_memcpy(&_this->displays[index], &_this->displays[i], sizeof(tmp)); SDL_memcpy(&_this->displays[i], &tmp, sizeof(tmp));