diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index 905bec09898d303aff78604da9c1c2c1ab28f035..68ebc5e9413adf11bbed87b1e64662aa25378beb 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -1453,11 +1453,11 @@ 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 *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)
 	{
@@ -1465,11 +1465,7 @@ const char *I_GetJoyName(INT32 joyindex)
 		{
 			tempname = SDL_JoystickNameForIndex(joyindex);
 			if (tempname)
-			{
-				templen = strlen(tempname);
-				joyname = malloc(templen*sizeof(char));
-				strcpy(joyname, tempname);
-			}
+				strncpy(joyname, tempname, 255);
 		}
 		SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
 	}
@@ -1477,11 +1473,7 @@ const char *I_GetJoyName(INT32 joyindex)
 	{
 		tempname = SDL_JoystickNameForIndex(joyindex);
 		if (tempname)
-		{
-			templen = strlen(tempname);
-			joyname = malloc(templen*sizeof(char));
-			strcpy(joyname, tempname);
-		}
+			strncpy(joyname, tempname, 255);
 	}
 	return joyname;
 }
diff --git a/src/sdl12/i_system.c b/src/sdl12/i_system.c
index c4dd96f8489fb462e4f734e2bdee4d72f9231de7..10fbc50eed0892fa9301560477b0f8c84d1d7530 100644
--- a/src/sdl12/i_system.c
+++ b/src/sdl12/i_system.c
@@ -1575,11 +1575,11 @@ 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 *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)
 	{
@@ -1587,11 +1587,7 @@ const char *I_GetJoyName(INT32 joyindex)
 		{
 			tempname = SDL_JoystickNameForIndex(joyindex);
 			if (tempname)
-			{
-				templen = strlen(tempname);
-				joyname = malloc(templen*sizeof(char));
-				strcpy(joyname, tempname);
-			}
+				strncpy(joyname, tempname, 255);
 		}
 		SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
 	}
@@ -1599,11 +1595,7 @@ const char *I_GetJoyName(INT32 joyindex)
 	{
 		tempname = SDL_JoystickNameForIndex(joyindex);
 		if (tempname)
-		{
-			templen = strlen(tempname);
-			joyname = malloc(templen*sizeof(char));
-			strcpy(joyname, tempname);
-		}
+			strncpy(joyname, tempname, 255);
 	}
 	return joyname;
 }