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 | abd1a6e687b7d4b332dc2fa35526a6e8de5f3857 (patch) | |
| tree | 987e803bbd6cf10e696c69cab99a73b8642fe678 /libcxx/include/regex | |
| parent | 62c730c9bd788ba9cc32c15e70a48a7fb823535d (diff) | |
| download | bcm5719-llvm-abd1a6e687b7d4b332dc2fa35526a6e8de5f3857.tar.gz bcm5719-llvm-abd1a6e687b7d4b332dc2fa35526a6e8de5f3857.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
llvm-svn: 284881
Diffstat (limited to 'libcxx/include/regex')
| -rw-r--r-- | libcxx/include/regex | 18 |
1 files changed, 18 insertions, 0 deletions
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_; |

