From: Adam Dickmeiss Date: Mon, 18 Jul 2011 12:21:48 +0000 (+0200) Subject: url_recipe: avoid empty regex X-Git-Tag: v1.2.10~15 X-Git-Url: http://jsfdemo.indexdata.com/cgi-bin?a=commitdiff_plain;h=f361b19c06d801535a66ed1cd77b75e496b85426;p=metaproxy-moved-to-github.git url_recipe: avoid empty regex On some Boost regex libraries an empty regex throws an exception --- diff --git a/src/url_recipe.cpp b/src/url_recipe.cpp index 8076928..7a8f28f 100644 --- a/src/url_recipe.cpp +++ b/src/url_recipe.cpp @@ -117,15 +117,19 @@ std::string mp_xml::url_recipe_handle(xmlDoc *doc, std::string recipe) break; } } - boost::regex::flag_type b_mode = boost::regex::perl; - if (mode.find_first_of('i') != std::string::npos) - b_mode |= boost::regex::icase; - boost::regex e(pattern, b_mode); - - boost::match_flag_type match_mode = boost::format_first_only; - if (mode.find_first_of('g') != std::string::npos) - match_mode = boost::format_all; - result += regex_replace(text, e, replacement, match_mode); + if (pattern.length() == 0) + result += text; + else + { + boost::regex::flag_type b_mode = boost::regex::perl; + if (mode.find_first_of('i') != std::string::npos) + b_mode |= boost::regex::icase; + boost::regex e(pattern, b_mode); + boost::match_flag_type match_mode = boost::format_first_only; + if (mode.find_first_of('g') != std::string::npos) + match_mode = boost::format_all; + result += regex_replace(text, e, replacement, match_mode); + } } } return result;