Fix Bug 19678 - libc++ does not correctly handle the regex: '[^\0]*'
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@209307 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
117563c516
commit
6b7e6921e2
@ -4541,6 +4541,13 @@ basic_regex<_CharT, _Traits>::__parse_character_escape(_ForwardIterator __first,
|
|||||||
__push_char(_CharT(__sum));
|
__push_char(_CharT(__sum));
|
||||||
++__first;
|
++__first;
|
||||||
break;
|
break;
|
||||||
|
case '0':
|
||||||
|
if (__str)
|
||||||
|
*__str = _CharT(0);
|
||||||
|
else
|
||||||
|
__push_char(_CharT(0));
|
||||||
|
++__first;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (*__first != '_' && !__traits_.isctype(*__first, ctype_base::alnum))
|
if (*__first != '_' && !__traits_.isctype(*__first, ctype_base::alnum))
|
||||||
{
|
{
|
||||||
|
@ -608,6 +608,18 @@ int main()
|
|||||||
assert(m.position(0) == 0);
|
assert(m.position(0) == 0);
|
||||||
assert(m.str(0) == s);
|
assert(m.str(0) == s);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
std::cmatch m;
|
||||||
|
const char s[] = "foobar";
|
||||||
|
assert(std::regex_match(s, m, std::regex("[^\\0]*")));
|
||||||
|
assert(m.size() == 1);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::cmatch m;
|
||||||
|
const char s[] = "foo\0bar";
|
||||||
|
assert(std::regex_match(s, s+7, m, std::regex("[abfor\\0]*")));
|
||||||
|
assert(m.size() == 1);
|
||||||
|
}
|
||||||
std::locale::global(std::locale("C"));
|
std::locale::global(std::locale("C"));
|
||||||
{
|
{
|
||||||
std::cmatch m;
|
std::cmatch m;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user