SDL: Fixed crash if GetRectDisplayIndex() is called before SDL_VideoInit()

From d87048fd5a7dff55c4cb205dd29e527c9cc51225 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 30 Nov 2022 14:37:34 -0800
Subject: [PATCH] Fixed crash if GetRectDisplayIndex() is called before
 SDL_VideoInit()

---
 src/video/SDL_video.c | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index 658058f33513..089b3e6a8f56 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1122,25 +1122,27 @@ static int GetRectDisplayIndex(int x, int y, int w, int h)
     center.x = x + w / 2;
     center.y = y + h / 2;
 
-    for (i = 0; i < _this->num_displays; ++i) {
-        SDL_Rect display_rect;
-        SDL_GetDisplayBounds(i, &display_rect);
+    if (_this) {
+        for (i = 0; i < _this->num_displays; ++i) {
+            SDL_Rect display_rect;
+            SDL_GetDisplayBounds(i, &display_rect);
 
-        /* Check if the window is fully enclosed */
-        if (SDL_EnclosePoints(&center, 1, &display_rect, NULL)) {
-            return i;
-        }
+            /* Check if the window is fully enclosed */
+            if (SDL_EnclosePoints(&center, 1, &display_rect, NULL)) {
+                return i;
+            }
 
-        /* Snap window center to the display rect */
-        closest_point_on_display = center;
-        SDL_GetClosestPointOnRect(&display_rect, &closest_point_on_display);
+            /* Snap window center to the display rect */
+            closest_point_on_display = center;
+            SDL_GetClosestPointOnRect(&display_rect, &closest_point_on_display);
 
-        delta.x = center.x - closest_point_on_display.x;
-        delta.y = center.y - closest_point_on_display.y;
-        dist = (delta.x * delta.x + delta.y * delta.y);
-        if (dist < closest_dist) {
-            closest = i;
-            closest_dist = dist;
+            delta.x = center.x - closest_point_on_display.x;
+            delta.y = center.y - closest_point_on_display.y;
+            dist = (delta.x * delta.x + delta.y * delta.y);
+            if (dist < closest_dist) {
+                closest = i;
+                closest_dist = dist;
+            }
         }
     }