boost/ocaml/python - all NON-WORKING at the moment.
[fedora-mingw.git] / boost / boost-regex.patch
diff --git a/boost/boost-regex.patch b/boost/boost-regex.patch
new file mode 100644 (file)
index 0000000..9260afc
--- /dev/null
@@ -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<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: