diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index 635bd7ee9bc8f4979da091c11da951d3aecd1b62..734c3a35ac2b63c53bb12e2aee5637a7ebf0a8ed 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -1301,7 +1301,7 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
 
 	M_Memcpy(netbuffer->u.serverinfo.mapmd5, mapmd5, 16);
 
-	if (*mapheaderinfo[gamemap-1]->lvlttl)
+	if (mapheaderinfo[gamemap-1] && *mapheaderinfo[gamemap-1]->lvlttl)
 	{
 		char *read = mapheaderinfo[gamemap-1]->lvlttl, *writ = netbuffer->u.serverinfo.maptitle;
 		while (writ < (netbuffer->u.serverinfo.maptitle+32) && *read != '\0')
@@ -1321,12 +1321,13 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
 
 	netbuffer->u.serverinfo.maptitle[32] = '\0';
 
-	if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
+	if (mapheaderinfo[gamemap-1] && !(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
 		netbuffer->u.serverinfo.iszone = 1;
 	else
 		netbuffer->u.serverinfo.iszone = 0;
 
-	netbuffer->u.serverinfo.actnum = mapheaderinfo[gamemap-1]->actnum;
+	if (mapheaderinfo[gamemap-1])
+		netbuffer->u.serverinfo.actnum = mapheaderinfo[gamemap-1]->actnum;
 
 	p = PutFileNeeded();
 
diff --git a/src/dehacked.c b/src/dehacked.c
index 40ba0abca5b7c6e4299a7d33550080f1e24e072b..6b790016ca9561648e66bd3097b4d7674a1c09ae 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -286,7 +286,7 @@ static void clear_levels(void)
 	// we may as well try to save some memory, right?
 	for (i = 0; i < NUMMAPS; ++i)
 	{
-		if (!mapheaderinfo[i])
+		if (!mapheaderinfo[i] || i == (tutorialmap-1))
 			continue;
 
 		// Custom map header info
diff --git a/src/m_menu.c b/src/m_menu.c
index 775dfe68ba4c2d6c1a9c29168c6a67bf319479c2..7c98396cef424bf9fb4752266545fb5ee3570e93 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -6686,7 +6686,10 @@ static void M_DrawChecklist(void)
 	{
 		if (unlockables[i].name[0] == 0 //|| unlockables[i].nochecklist
 		|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS)
+		{
+			i += 1;
 			continue;
+		}
 
 		V_DrawString(currentMenu->x, y, ((unlockables[i].unlocked) ? V_GREENMAP : V_TRANSLUCENT)|V_ALLOWLOWERCASE, ((unlockables[i].unlocked || !unlockables[i].nochecklist) ? unlockables[i].name : M_CreateSecretMenuOption(unlockables[i].name)));