X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=boost%2Fboost-regex.patch;fp=boost%2Fboost-regex.patch;h=9260afc35b5ed408e673ba526c7762a1ef4f6103;hb=51ddfac7d2491565912741d3b6713cebdfdab7e9;hp=0000000000000000000000000000000000000000;hpb=6764eadec537b24cf9482400bcf52f938bcedc2d;p=fedora-mingw.git diff --git a/boost/boost-regex.patch b/boost/boost-regex.patch new file mode 100644 index 0000000..9260afc --- /dev/null +++ b/boost/boost-regex.patch @@ -0,0 +1,40 @@ +*** boost/regex/v4/basic_regex_parser.hpp.orig 2008-01-14 12:53:01.000000000 -0600 +--- boost/regex/v4/basic_regex_parser.hpp 2008-01-14 12:57:25.000000000 -0600 +*************** bool basic_regex_parser:: +*** 777,782 **** +--- 777,783 ---- + case syntax_element_restart_continue: + case syntax_element_jump: + case syntax_element_startmark: ++ case syntax_element_backstep: + // can't legally repeat any of the above: + fail(regex_constants::error_badrepeat, m_position - m_base); + return false; +*************** bool basic_regex_parser:: +*** 1862,1867 **** +--- 1863,1869 ---- + if(markid == -4) + { + re_syntax_base* b = this->getaddress(expected_alt_point); ++ // Make sure we have exactly one alternative following this state: + if(b->type != syntax_element_alt) + { + re_alt* alt = static_cast(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt))); +*************** bool basic_regex_parser:: +*** 1872,1877 **** +--- 1874,1888 ---- + fail(regex_constants::error_bad_pattern, m_position - m_base); + return false; + } ++ // check for invalid repetition of next state: ++ b = this->getaddress(expected_alt_point); ++ b = this->getaddress(static_cast(b)->next.i, b); ++ if((b->type != syntax_element_assert_backref) ++ && (b->type != syntax_element_startmark)) ++ { ++ fail(regex_constants::error_badrepeat, m_position - m_base); ++ return false; ++ } + } + // + // append closing parenthesis state: