SDL: video: Fix memory leak when deleting a video display (0f575)

From 0f5752b0fc305f2ce6df680ffd81ee2bead77ac6 Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Fri, 21 Jun 2024 13:02:36 -0400
Subject: [PATCH] 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.

(cherry picked from commit 20f1061cc86b07146ba410e551d4994cd430e209)
---
 src/video/SDL_video.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index ee723a57b197f..26c7b8ad718a2 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -672,9 +672,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;