Index: src/ch/FilterTypesMenuWrapper.cpp
===================================================================
diff -u -N -r9250a0229add10f4315e76848c755f337a16ae95 -r63369021254e8b67ffeef5a9ece1b5a70df881c4
--- src/ch/FilterTypesMenuWrapper.cpp	(.../FilterTypesMenuWrapper.cpp)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
+++ src/ch/FilterTypesMenuWrapper.cpp	(.../FilterTypesMenuWrapper.cpp)	(revision 63369021254e8b67ffeef5a9ece1b5a70df881c4)
@@ -3,6 +3,7 @@
 #include "ch.h"
 #include "resource.h"
 #include "../libstring/TStringArray.h"
+#include <regex>
 
 void FilterTypesMenuWrapper::Init()
 {
@@ -53,3 +54,29 @@
 		}
 	}
 }
+
+bool FilterTypesMenuWrapper::ValidateFilter(const chcore::TStringPatternArray& arrPattern)
+{
+	CStringA strMsg;
+	try
+	{
+		arrPattern.MatchesAny(chcore::PathFromString(L""));
+	}
+	catch(const std::regex_error& e)
+	{
+		strMsg = e.what();
+	}
+
+	if(!strMsg.IsEmpty())
+	{
+		CString strFmt;
+		strFmt.Format(L"%S", (PCSTR)strMsg);
+
+		ictranslate::CFormat fmt(GetResManager().LoadString(IDS_INVALID_FILTER));
+		fmt.SetParam(_T("%err"), strFmt);
+		AfxMessageBox(fmt.ToString());
+		return false;
+	}
+
+	return true;
+}