From 528cf2abb9d8f44afc4e264f6c31d5e735a0956a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 8 Jun 2010 12:41:41 +0000 Subject: [PATCH] Some lookbehind assertions were accepted when they should not have been. Fixes #4309. [SVN r62563] --- include/boost/regex/v4/basic_regex_creator.hpp | 8 ++++++++ test/regress/test_perl_ex.cpp | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) 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("(?