diff --git a/src/m_menu.c b/src/m_menu.c index 4b65303b..f6eb705f 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -6736,13 +6736,9 @@ static void M_SetupJoystickMenu(INT32 choice) for (i = 1; i < 8; i++) { if (i <= n && (I_GetJoyName(i)) != NULL) - { strncpy(joystickInfo[i], I_GetJoyName(i), 28); - CONS_Printf("%s\n", joystickInfo[i]); - } else strcpy(joystickInfo[i], joyNA); - CONS_Printf("%s\n", joystickInfo[i]); } M_SetupNextMenu(&OP_JoystickSetDef); diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index 2b35ce8b..68ebc5e9 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -1453,18 +1453,28 @@ INT32 I_NumJoys(void) return numjoy; } +static char joyname[255]; // MAX_PATH; joystick name is straight from the driver + const char *I_GetJoyName(INT32 joyindex) { - const char *joyname = "NA"; + const char *tempname = NULL; joyindex--; //SDL's Joystick System starts at 0, not 1 if (SDL_WasInit(SDL_INIT_JOYSTICK) == 0) { if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) != -1) - joyname = SDL_JoystickNameForIndex(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + strncpy(joyname, tempname, 255); + } SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } else - joyname = SDL_JoystickNameForIndex(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + strncpy(joyname, tempname, 255); + } return joyname; } diff --git a/src/sdl12/i_system.c b/src/sdl12/i_system.c index 8729e592..10fbc50e 100644 --- a/src/sdl12/i_system.c +++ b/src/sdl12/i_system.c @@ -1575,18 +1575,28 @@ INT32 I_NumJoys(void) return numjoy; } +static char joyname[255]; // MAX_PATH; joystick name is straight from the driver + const char *I_GetJoyName(INT32 joyindex) { - const char *joyname = "NA"; + const char *tempname = NULL; joyindex--; //SDL's Joystick System starts at 0, not 1 if (SDL_WasInit(SDL_INIT_JOYSTICK) == 0) { if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) != -1) - joyname = SDL_JoystickName(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + strncpy(joyname, tempname, 255); + } SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } else - joyname = SDL_JoystickName(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + strncpy(joyname, tempname, 255); + } return joyname; }