Catch regex errors #31
authorKyle Fuller <redacted>
Wed, 14 Oct 2015 15:30:12 +0000 (08:30 -0700)
committerKyle Fuller <redacted>
Wed, 14 Oct 2015 15:30:12 +0000 (08:30 -0700)
palaver.cpp

index a5784725fa9ca693f07424e9f75b24abca2a10b2..c1adb660b16f05900e6574628d6bea4fc4254026 100644 (file)
@@ -485,10 +485,15 @@ public:
 
 #ifdef HAS_REGEX
                        std::smatch match;
-                       std::regex expression = std::regex("\\b" + re_escape(sKeyword) + "\\b",
-                                       std::regex_constants::ECMAScript | std::regex_constants::icase);
+                       CString sExpression = "\\b" + re_escape(sKeyword) + "\\b";
 
-                       std::regex_search(sMessage, match, expression);
+                       try {
+                               std::regex expression = std::regex(sExpression,
+                                       std::regex_constants::ECMAScript | std::regex_constants::icase);
+                               std::regex_search(sMessage, match, expression);
+                       } catch (std::regex_error& error) {
+                               DEBUG("Caught regex error '" << error.code() << "' from '" << sExpression << "'.");
+                       }
 
                        if (!match.empty()) {
                                bResult = true;
git clone https://git.99rst.org/PROJECT