diff options
author | Tim Shen <timshen91@gmail.com> | 2016-10-21 20:41:47 +0000 |
---|---|---|
committer | Tim Shen <timshen91@gmail.com> | 2016-10-21 20:41:47 +0000 |
commit | 741cb8b8e6092bbf88f9bd8fec76104f69bf18fb (patch) | |
tree | 9def8f76aa3216bdd69e2d649ec45e06dad86dac /include/regex | |
parent | 2d164cbf6fb3c2058ad941f8b19b13572a9fc905 (diff) | |
download | external_libcxx-741cb8b8e6092bbf88f9bd8fec76104f69bf18fb.tar.gz external_libcxx-741cb8b8e6092bbf88f9bd8fec76104f69bf18fb.tar.bz2 external_libcxx-741cb8b8e6092bbf88f9bd8fec76104f69bf18fb.zip |
[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
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/regex')
-rw-r--r-- | include/regex | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/regex b/include/regex index f8fb6af82..975f64010 100644 --- a/include/regex +++ b/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_; |