diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 4de166e415708528d619fd27f2a77cfadca58e38..8917156d7abdc3006d0a3e25d949f50f65a935f7 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -2054,7 +2054,9 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
 	lastgametype = gametype;
 	gametype = READUINT8(*cp);
 
-	if (gametype != lastgametype)
+	if (gametype < 0 || gametype >= NUMGAMETYPES)
+		gametype = lastgametype;
+	else if (gametype != lastgametype)
 		D_GameTypeChanged(lastgametype); // emulate consvar_t behavior for gametype
 
 	skipprecutscene = ((flags & (1<<2)) != 0);