diff --git a/include/boost/regex/v4/perl_matcher_non_recursive.hpp b/include/boost/regex/v4/perl_matcher_non_recursive.hpp index c29f3fe7..297548c2 100644 --- a/include/boost/regex/v4/perl_matcher_non_recursive.hpp +++ b/include/boost/regex/v4/perl_matcher_non_recursive.hpp @@ -21,7 +21,6 @@ #define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP #include -#include #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX @@ -547,7 +546,7 @@ bool perl_matcher::match_dot_repeat return match_dot_repeat_slow(); const re_repeat* rep = static_cast(pstate); - unsigned count = std_min(static_cast(re_detail::distance(position, last)), static_cast(rep->greedy ? rep->max : rep->min)); + unsigned count = (std::min)(static_cast(re_detail::distance(position, last)), static_cast(rep->greedy ? rep->max : rep->min)); if(rep->min > count) return false; // not enough text left to match std::advance(position, count); @@ -594,7 +593,7 @@ bool perl_matcher::match_char_repea if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (traits_inst.translate(*position, icase) == what)) { @@ -661,7 +660,7 @@ bool perl_matcher::match_set_repeat if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && map[(traits_uchar_type)traits_inst.translate(*position, icase)]) { @@ -728,7 +727,7 @@ bool perl_matcher::match_long_set_r if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (position != re_is_set_member(position, last, set, re))) { diff --git a/include/boost/regex/v4/perl_matcher_recursive.hpp b/include/boost/regex/v4/perl_matcher_recursive.hpp index 78f856dd..721e44d3 100644 --- a/include/boost/regex/v4/perl_matcher_recursive.hpp +++ b/include/boost/regex/v4/perl_matcher_recursive.hpp @@ -20,8 +20,6 @@ #ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP #define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP -#include - #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX #endif @@ -402,7 +400,7 @@ bool perl_matcher::match_dot_repeat // start by working out how much we can skip: // const re_repeat* rep = static_cast(pstate); - unsigned count = std_min(static_cast(re_detail::distance(position, last)), (rep->greedy ? rep->max : rep->min)); + unsigned count = (std::min)(static_cast(re_detail::distance(position, last)), (rep->greedy ? rep->max : rep->min)); if(rep->min > count) return false; // not enough text left to match std::advance(position, count); @@ -460,7 +458,7 @@ bool perl_matcher::match_char_repea if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (traits_inst.translate(*position, icase) == what)) { @@ -509,8 +507,16 @@ bool perl_matcher::match_char_repea return false; if(position == last) return false; - position = ++save_pos; - ++count; + position = save_pos; + if(traits_inst.translate(*position, icase) == what) + { + ++position; + ++count; + } + else + { + return false; + } }while(true); #ifdef __BORLANDC__ #pragma option pop @@ -540,7 +546,7 @@ bool perl_matcher::match_set_repeat if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && map[(traits_uchar_type)traits_inst.translate(*position, icase)]) { @@ -589,8 +595,16 @@ bool perl_matcher::match_set_repeat return false; if(position == last) return false; - position = ++save_pos; - ++count; + position = save_pos; + if(map[(traits_uchar_type)traits_inst.translate(*position, icase)]) + { + ++position; + ++count; + } + else + { + return false; + } }while(true); #ifdef __BORLANDC__ #pragma option pop @@ -620,7 +634,7 @@ bool perl_matcher::match_long_set_r if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - std::advance(end, std_min((unsigned)re_detail::distance(position, last), desired)); + std::advance(end, (std::min)((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (position != re_is_set_member(position, last, set, re))) { @@ -669,8 +683,16 @@ bool perl_matcher::match_long_set_r return false; if(position == last) return false; - position = ++save_pos; - ++count; + position = save_pos; + if(position != re_is_set_member(position, last, set, re)) + { + ++position; + ++count; + } + else + { + return false; + } }while(true); #ifdef __BORLANDC__ #pragma option pop diff --git a/include/boost/regex/v4/regex_token_iterator.hpp b/include/boost/regex/v4/regex_token_iterator.hpp index bb3afa11..2bb26930 100644 --- a/include/boost/regex/v4/regex_token_iterator.hpp +++ b/include/boost/regex/v4/regex_token_iterator.hpp @@ -51,11 +51,7 @@ template regex_type; -#if 1 typedef sub_match value_type; -#else - typedef std::basic_string value_type; -#endif match_results what; // current match BidirectionalIterator end; // end of search area