diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 519dec57085ded44b647859fadd4df28c8133886..4fa8150df838211612d955286ac7bd126b3b4e5d 100755
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -5079,7 +5079,7 @@ void TryRunTics(tic_t realtics, tic_t entertic)
 	netUpdateFudge = (((double)SDL_GetPerformanceCounter() / tic_frequency) - frame); // record the timefudge where the net update typically occurs
 
 	//TODO SPLITSCREEN PLAYER
-	ticcmd_t latestLocalCmd = localcmds;
+	// ticcmd_t latestLocalCmd = localcmds;
 
 	NetUpdate();
 
diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 752175111d43a579912056a990181377d1951b93..76d145b7cff598bf51f6f430a3c8835f098c2850 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -2189,6 +2189,8 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
 		return;
 	}
 
+	InvalidateSavestates();
+
 	if (chmappending)
 		chmappending--;
 
diff --git a/src/p_savenetrb.c b/src/p_savenetrb.c
index ff536d0f3eb0060f8e26e719d7c01511f7a54be4..8706ea1d54136e4cee021b17b9c3f85cc9900ccb 100755
--- a/src/p_savenetrb.c
+++ b/src/p_savenetrb.c
@@ -5774,8 +5774,8 @@ static inline boolean P_UnArchiveLuabanksAndConsistency(void)
 
 void P_GameStateFreeMemory(savestate_t* savestate)
 {
-	if (gamestate != GS_LEVEL)
-		Z_Free(savestate->buffer);
+	// if (gamestate != GS_LEVEL)
+	Z_Free(savestate->buffer);
 	savestate->buffer = NULL; //a hacky way to invalidate the memory
 }
 
@@ -5867,7 +5867,7 @@ boolean P_LoadGameState(const savestate_t* savestate)
 	if (savedGameMap != gamemap)
 	{
 		// savestates do not work cross-level
-		save_p = NULL; //invalidate it
+		// save_p = NULL; //invalidate it //FUCK
 		return false;
 	}