+++ /dev/null
-*** 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<charT, traits>::
-*** 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<charT, traits>::
-*** 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<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
-*************** bool basic_regex_parser<charT, traits>::
-*** 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<re_alt*>(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: