diff --git a/include/boost/regex/v4/basic_regex_creator.hpp b/include/boost/regex/v4/basic_regex_creator.hpp index fe971ed5..f3bc0061 100644 --- a/include/boost/regex/v4/basic_regex_creator.hpp +++ b/include/boost/regex/v4/basic_regex_creator.hpp @@ -1039,6 +1039,14 @@ int basic_regex_creator::calculate_backstep(re_syntax_base* state case syntax_element_jump: state = static_cast(state)->alt.p; continue; + case syntax_element_alt: + { + int r1 = calculate_backstep(state->next.p); + int r2 = calculate_backstep(static_cast(state)->alt.p); + if((r1 < 0) || (r1 != r2)) + return -1; + return result + r1; + } default: break; } diff --git a/test/regress/test_perl_ex.cpp b/test/regress/test_perl_ex.cpp index 27d5cee4..05abf22d 100644 --- a/test/regress/test_perl_ex.cpp +++ b/test/regress/test_perl_ex.cpp @@ -132,6 +132,8 @@ void test_conditionals() TEST_INVALID_REGEX("(?