From abd1a6e687b7d4b332dc2fa35526a6e8de5f3857 Mon Sep 17 00:00:00 2001 From: Tim Shen Date: Fri, 21 Oct 2016 20:41:47 +0000 Subject: [libcxx] Support std::regex_constants::match_not_null Summary: Fixes PR21597. Reviewers: mclow.lists, EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D25595 llvm-svn: 284881 --- libcxx/include/regex | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libcxx/include/regex') diff --git a/libcxx/include/regex b/libcxx/include/regex index f8fb6af8266..975f64010dd 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -5555,6 +5555,12 @@ basic_regex<_CharT, _Traits>::__match_at_start_ecma( switch (__s.__do_) { case __state::__end_state: + if (__flags & regex_constants::match_not_null && + __s.__current_ == __first) + { + __states.pop_back(); + break; + } __m.__matches_[0].first = __first; __m.__matches_[0].second = _VSTD::next(__first, __s.__current_ - __first); __m.__matches_[0].matched = true; @@ -5618,6 +5624,12 @@ basic_regex<_CharT, _Traits>::__match_at_start_posix_nosubs( switch (__s.__do_) { case __state::__end_state: + if (__flags & regex_constants::match_not_null && + __s.__current_ == __first) + { + __states.pop_back(); + break; + } if (!__matched || __highest_j < __s.__current_ - __s.__first_) __highest_j = __s.__current_ - __s.__first_; __matched = true; @@ -5703,6 +5715,12 @@ basic_regex<_CharT, _Traits>::__match_at_start_posix_subs( switch (__s.__do_) { case __state::__end_state: + if (__flags & regex_constants::match_not_null && + __s.__current_ == __first) + { + __states.pop_back(); + break; + } if (!__matched || __highest_j < __s.__current_ - __s.__first_) { __highest_j = __s.__current_ - __s.__first_; -- cgit v1.2.3