From 0c0680d2f3db3ea28d07191624208594f1fb58f1 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Sun, 15 Feb 2026 00:12:40 +0100 Subject: [PATCH] Fix controller name display in menu (and a segfault) --- src/m_menu.c | 5 ++--- src/sdl/i_gamepad.c | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 3451cdc55..5434ff7fd 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -2619,7 +2619,7 @@ static void M_DrawRightString(menuitem_t *item, INT16 x, INT16 y, INT32 vflags, { INT32 stick = cv_usecontroller[setupcontrolplayer-1].value; const char *name = stick == 0 ? "None" : I_GetControllerName(stick); - if (!name) name = "?"; + if (!name) name = "Unavailable"; w = V_StringWidth(name, vflags); (w > BASEVIDWIDTH/2 - 4 ? V_DrawRightAlignedThinString : V_DrawRightAlignedString) (BASEVIDWIDTH - x, y, vflags|highlightflags, name); @@ -8443,7 +8443,6 @@ INT32 MR_SetupJoystickMenu(INT32 arg) const INT32 numcontrollers = I_NumControllers(); INT32 i = 0; - INT32 j; if (arg < 0 || arg >= MAXSPLITSCREENPLAYERS) return false; @@ -8468,7 +8467,7 @@ INT32 MR_SetupJoystickMenu(INT32 arg) // // Update cv_usecontroller.string here so that the user can // properly change this value. - for (j = 0; j < MAXSPLITSCREENPLAYERS; j++) + for (INT32 j = 0; j < MAXSPLITSCREENPLAYERS; j++) { if (i == cv_usecontroller[j].value) CV_SetValue(&cv_usecontroller[j], i); diff --git a/src/sdl/i_gamepad.c b/src/sdl/i_gamepad.c index fdc7d604c..410292502 100644 --- a/src/sdl/i_gamepad.c +++ b/src/sdl/i_gamepad.c @@ -352,7 +352,7 @@ const char *I_GetControllerName(INT32 joyid) { if (SDL_WasInit(SDL_INIT_GAMEPAD) == SDL_INIT_GAMEPAD) { - if (joyid <= 0) + if (joyid <= 0 || joyid > numcontrollers) return NULL; if (!controllerlist)