diff --git a/src/blua/ldump.c b/src/blua/ldump.c
index c9d3d4870f4d915a46e4f98d88a6af735325647b..b69a127290079beb4cb342db4f3cf120801d4804 100644
--- a/src/blua/ldump.c
+++ b/src/blua/ldump.c
@@ -60,7 +60,7 @@ static void DumpVector(const void* b, int n, size_t size, DumpState* D)
 
 static void DumpString(const TString* s, DumpState* D)
 {
- if (s==NULL || getstr(s)==NULL)
+ if (s==NULL)
  {
   size_t size=0;
   DumpVar(size,D);
diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 679e102e21124e405ff369b647da09b0c85e7a5c..1733d33240753f269a7eabd1e86de449d3e81597 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -4575,7 +4575,7 @@ void Command_Retry_f(void)
 		CONS_Printf(M_GetText("You must be in a level to use this.\n"));
 	else if (netgame || multiplayer)
 		CONS_Printf(M_GetText("This only works in single player.\n"));
-	else if (!&players[consoleplayer] || players[consoleplayer].lives <= 1)
+	else if (players[consoleplayer].lives <= 1)
 		CONS_Printf(M_GetText("You can't retry without any lives remaining!\n"));
 	else if (G_IsSpecialStage(gamemap))
 		CONS_Printf(M_GetText("You can't retry special stages!\n"));
diff --git a/src/filesrch.c b/src/filesrch.c
index ec095518e824d540675750c1b70c56fad9065b96..3f901b6958711aaf13723bba4b1e7e7771bc7902 100644
--- a/src/filesrch.c
+++ b/src/filesrch.c
@@ -712,9 +712,9 @@ lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders)
 	// Close any open directories and return if something went wrong.
 	if (failure)
 	{
+		for (; depthleft < maxdirdepth; closedir(dirhandle[depthleft++]));
 		free(dirpathindex);
 		free(dirhandle);
-		for (; depthleft < maxdirdepth; closedir(dirhandle[depthleft++]));
 		return NULL;
 	}
 
diff --git a/src/m_menu.c b/src/m_menu.c
index 48ee6850d025bd7b33cda222dbbecaeb2aca6f28..9daab767f43e98f4c642fcd0700a217473d2e7c0 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -3686,17 +3686,12 @@ void M_StartControlPanel(void)
 		}
 		else
 		{
-			INT32 numlives = 2;
+			INT32 numlives = players[consoleplayer].lives;
+			if (players[consoleplayer].playerstate != PST_LIVE)
+				++numlives;
 
 			SPauseMenu[spause_pandora].status = (M_SecretUnlocked(SECRET_PANDORA) && !marathonmode) ? (IT_STRING | IT_CALL) : (IT_DISABLED);
 
-			if (&players[consoleplayer])
-			{
-				numlives = players[consoleplayer].lives;
-				if (players[consoleplayer].playerstate != PST_LIVE)
-					++numlives;
-			}
-
 			// The list of things that can disable retrying is (was?) a little too complex
 			// for me to want to use the short if statement syntax
 			if (numlives <= 1 || G_IsSpecialStage(gamemap))
@@ -3754,7 +3749,7 @@ void M_StartControlPanel(void)
 			if (G_GametypeHasTeams())
 				MPauseMenu[mpause_switchteam].status = IT_STRING | IT_SUBMENU;
 			else if (G_GametypeHasSpectators())
-				MPauseMenu[((&players[consoleplayer] && players[consoleplayer].spectator) ? mpause_entergame : mpause_spectate)].status = IT_STRING | IT_CALL;
+				MPauseMenu[players[consoleplayer].spectator ? mpause_entergame : mpause_spectate].status = IT_STRING | IT_CALL;
 			else // in this odd case, we still want something to be on the menu even if it's useless
 				MPauseMenu[mpause_spectate].status = IT_GRAYEDOUT;
 		}
@@ -7014,7 +7009,7 @@ static void M_RetryResponse(INT32 ch)
 	if (ch != 'y' && ch != KEY_ENTER)
 		return;
 
-	if (!&players[consoleplayer] || netgame || multiplayer) // Should never happen!
+	if (netgame || multiplayer) // Should never happen!
 		return;
 
 	M_ClearMenus(true);
diff --git a/src/m_misc.c b/src/m_misc.c
index 907f83ea62a22d5074758c103a90a12f21806802..6c346e5a1f17c49f85f792996849a7013f7665d8 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -836,7 +836,7 @@ static void M_PNGText(png_structp png_ptr, png_infop png_info_ptr, PNG_CONST png
 	else
 		snprintf(lvlttltext, 48, "Unknown");
 
-	if (gamestate == GS_LEVEL && &players[displayplayer] && players[displayplayer].mo)
+	if (gamestate == GS_LEVEL && players[displayplayer].mo)
 		snprintf(locationtxt, 40, "X:%d Y:%d Z:%d A:%d",
 			players[displayplayer].mo->x>>FRACBITS,
 			players[displayplayer].mo->y>>FRACBITS,
diff --git a/src/w_wad.c b/src/w_wad.c
index 9e69fa451ded270e7275e376c0a3340e99c5427f..7e5f056cfa0ad51e51d282001e4393f69505fa5e 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -644,8 +644,6 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
 		lump_p->fullname = Z_Calloc(zentry.namelen + 1, PU_STATIC, NULL);
 		strncpy(lump_p->fullname, fullname, zentry.namelen);
 
-		free(fullname);
-
 		switch(zentry.compression)
 		{
 		case 0:
@@ -665,6 +663,8 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
 			break;
 		}
 
+		free(fullname);
+
 		// skip and ignore comments/extra fields
 		if (fseek(handle, zentry.xtralen + zentry.commlen, SEEK_CUR) != 0)
 		{