Fix for PR22061 by K-ballo
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@227384 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
df00d5e5ad
commit
5e56c30413
@ -5601,12 +5601,17 @@ basic_regex<_CharT, _Traits>::__match_at_start_ecma(
|
||||
__node* __st = __start_.get();
|
||||
if (__st)
|
||||
{
|
||||
sub_match<const _CharT*> __unmatched;
|
||||
__unmatched.first = __last;
|
||||
__unmatched.second = __last;
|
||||
__unmatched.matched = false;
|
||||
|
||||
__states.push_back(__state());
|
||||
__states.back().__do_ = 0;
|
||||
__states.back().__first_ = __first;
|
||||
__states.back().__current_ = __first;
|
||||
__states.back().__last_ = __last;
|
||||
__states.back().__sub_matches_.resize(mark_count());
|
||||
__states.back().__sub_matches_.resize(mark_count(), __unmatched);
|
||||
__states.back().__loop_data_.resize(__loop_count());
|
||||
__states.back().__node_ = __st;
|
||||
__states.back().__flags_ = __flags;
|
||||
@ -5746,12 +5751,17 @@ basic_regex<_CharT, _Traits>::__match_at_start_posix_subs(
|
||||
__node* __st = __start_.get();
|
||||
if (__st)
|
||||
{
|
||||
sub_match<const _CharT*> __unmatched;
|
||||
__unmatched.first = __last;
|
||||
__unmatched.second = __last;
|
||||
__unmatched.matched = false;
|
||||
|
||||
__states.push_back(__state());
|
||||
__states.back().__do_ = 0;
|
||||
__states.back().__first_ = __first;
|
||||
__states.back().__current_ = __first;
|
||||
__states.back().__last_ = __last;
|
||||
__states.back().__sub_matches_.resize(mark_count());
|
||||
__states.back().__sub_matches_.resize(mark_count(), __unmatched);
|
||||
__states.back().__loop_data_.resize(__loop_count());
|
||||
__states.back().__node_ = __st;
|
||||
__states.back().__flags_ = __flags;
|
||||
|
@ -17,11 +17,13 @@
|
||||
#include <cassert>
|
||||
|
||||
void
|
||||
test()
|
||||
test(std::regex_constants::syntax_option_type syntax)
|
||||
{
|
||||
std::match_results<const char*> m;
|
||||
const char s[] = "abcdefghijk";
|
||||
assert(std::regex_search(s, m, std::regex("cd((e)fg)hi")));
|
||||
assert(std::regex_search(s, m, std::regex("cd((e)fg)hi|(z)", syntax)));
|
||||
|
||||
assert(m.size() == 4);
|
||||
|
||||
assert(m[0].first == s+2);
|
||||
assert(m[0].second == s+9);
|
||||
@ -46,5 +48,6 @@ test()
|
||||
|
||||
int main()
|
||||
{
|
||||
test();
|
||||
test(std::regex_constants::ECMAScript);
|
||||
test(std::regex_constants::extended);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user