diff --git a/src/m_menu.c b/src/m_menu.c
index 4b65303b861f337bc23152c8e0eea36f08feb02d..f6eb705fc9fa85fe60309d7bc44fd878b71fc599 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 2b35ce8b8a044c824b6f825a117d5ae1cf9703dc..68ebc5e9413adf11bbed87b1e64662aa25378beb 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 8729e5921d5b423945c47a58d2fb820a2f72d354..10fbc50eed0892fa9301560477b0f8c84d1d7530 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;
 }