diff --git a/src/filesrch.h b/src/filesrch.h
index dafde07cdf48d7dea63f64f9b528c91f4dd20304..e9092b590697a45e33ee92ab72247d7d1320d089 100644
--- a/src/filesrch.h
+++ b/src/filesrch.h
@@ -82,7 +82,8 @@ typedef enum
 	REFRESHDIR_ADDFILE = 2,
 	REFRESHDIR_WARNING = 4,
 	REFRESHDIR_ERROR = 8,
-	REFRESHDIR_MAX = 16
+	REFRESHDIR_NOTLOADED = 16,
+	REFRESHDIR_MAX = 32
 } refreshdir_enum;
 
 boolean preparefilemenu(boolean samedepth);
diff --git a/src/m_menu.c b/src/m_menu.c
index 6ba7fac3758d7c23c64f4620df2670facd1a791f..3712c863fe08ab44217047cb0cd247ccc29fc163 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -4810,7 +4810,9 @@ static boolean M_AddonsRefresh(void)
 
 	if (refreshdirmenu & REFRESHDIR_ADDFILE)
 	{
-		if (!(dirmenu[dir_on[menudepthleft]][DIR_TYPE] & EXT_LOADED))
+		addonsresponselimit = 0;
+
+		if (refreshdirmenu & REFRESHDIR_NOTLOADED)
 		{
 			char *message = NULL;
 			S_StartSound(NULL, sfx_lose);
@@ -4946,7 +4948,6 @@ static void M_AddonExec(INT32 ch)
 
 	S_StartSound(NULL, sfx_strpst);
 	COM_BufAddText(va("exec %s%s", menupath, dirmenu[dir_on[menudepthleft]]+DIR_STRING));
-	addonsresponselimit = 5;
 }
 
 #define len menusearch[0]
diff --git a/src/p_setup.c b/src/p_setup.c
index 02a6218451c84e662710fe4c787e431c9d9ef5f9..c7f247ccdc59d37173b581f094198f049dd5d639 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -54,6 +54,8 @@
 
 #include "v_video.h"
 
+#include "filesrch.h" // refreshdirmenu
+
 // wipes
 #include "f_finale.h"
 
@@ -3054,6 +3056,7 @@ boolean P_AddWadFile(const char *wadfilename, char **firstmapname)
 
 	if ((numlumps = W_LoadWadFile(wadfilename)) == INT16_MAX)
 	{
+		refreshdirmenu |= REFRESHDIR_NOTLOADED;
 		CONS_Printf(M_GetText("Errors occured while loading %s; not added.\n"), wadfilename);
 		return false;
 	}