SDL: Fixed crash if a game controller is disconnected while the connect message is in flight

From 7312b93d3202b77d5e00a9f282fa815cb7d994b1 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 22 Sep 2022 22:50:28 -0700
Subject: [PATCH] Fixed crash if a game controller is disconnected while the
 connect message is in flight

---
 test/testgamecontroller.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c
index 2dc32d60e17b..8ecdcd163e0d 100644
--- a/test/testgamecontroller.c
+++ b/test/testgamecontroller.c
@@ -106,14 +106,17 @@ static void UpdateWindowTitle()
         const char *name = SDL_GameControllerName(gamecontroller);
         const char *serial = SDL_GameControllerGetSerial(gamecontroller);
         const char *basetitle = "Game Controller Test: ";
-        const size_t titlelen = SDL_strlen(basetitle) + SDL_strlen(name) + (serial ? 3 + SDL_strlen(serial) : 0) + 1;
+        const size_t titlelen = SDL_strlen(basetitle) + (name ? SDL_strlen(name) : 0) + (serial ? 3 + SDL_strlen(serial) : 0) + 1;
         char *title = (char *)SDL_malloc(titlelen);
 
         retval = SDL_FALSE;
         done = SDL_FALSE;
 
         if (title) {
-            SDL_snprintf(title, titlelen, "%s%s", basetitle, name);
+            SDL_strlcpy(title, basetitle, titlelen);
+            if (name) {
+                SDL_strlcat(title, name, titlelen);
+            }
             if (serial) {
                 SDL_strlcat(title, " (", titlelen);
                 SDL_strlcat(title, serial, titlelen);