diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index 2b35ce8b..905bec09 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -1455,16 +1455,34 @@ INT32 I_NumJoys(void) const char *I_GetJoyName(INT32 joyindex) { - const char *joyname = "NA"; + const char *tempname = NULL; + size_t templen; + char *joyname = 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) + { + templen = strlen(tempname); + joyname = malloc(templen*sizeof(char)); + strcpy(joyname, tempname); + } + } SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } else - joyname = SDL_JoystickNameForIndex(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + { + templen = strlen(tempname); + joyname = malloc(templen*sizeof(char)); + strcpy(joyname, tempname); + } + } return joyname; } diff --git a/src/sdl12/i_system.c b/src/sdl12/i_system.c index 8729e592..c4dd96f8 100644 --- a/src/sdl12/i_system.c +++ b/src/sdl12/i_system.c @@ -1577,16 +1577,34 @@ INT32 I_NumJoys(void) const char *I_GetJoyName(INT32 joyindex) { - const char *joyname = "NA"; + const char *tempname = NULL; + size_t templen; + char *joyname = 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) + { + templen = strlen(tempname); + joyname = malloc(templen*sizeof(char)); + strcpy(joyname, tempname); + } + } SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } else - joyname = SDL_JoystickName(joyindex); + { + tempname = SDL_JoystickNameForIndex(joyindex); + if (tempname) + { + templen = strlen(tempname); + joyname = malloc(templen*sizeof(char)); + strcpy(joyname, tempname); + } + } return joyname; }