forked from OSchip/llvm-project
Update __parse_DUP_COUNT and __parse_BACKREF to use the traits class to recognize digits. Fixes PR18514
llvm-svn: 199541
This commit is contained in:
parent
5b9e5b5961
commit
9aafa898f9
|
@ -3310,13 +3310,17 @@ basic_regex<_CharT, _Traits>::__parse_BACKREF(_ForwardIterator __first,
|
||||||
_ForwardIterator __temp = _VSTD::next(__first);
|
_ForwardIterator __temp = _VSTD::next(__first);
|
||||||
if (__temp != __last)
|
if (__temp != __last)
|
||||||
{
|
{
|
||||||
if (*__first == '\\' && '1' <= *__temp && *__temp <= '9')
|
if (*__first == '\\')
|
||||||
{
|
{
|
||||||
__push_back_ref(*__temp - '0');
|
int __val = __traits_.value(*__temp, 10);
|
||||||
|
if (__val >= 1 && __val <= 9)
|
||||||
|
{
|
||||||
|
__push_back_ref(__val);
|
||||||
__first = ++__temp;
|
__first = ++__temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return __first;
|
return __first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4052,14 +4056,19 @@ basic_regex<_CharT, _Traits>::__parse_DUP_COUNT(_ForwardIterator __first,
|
||||||
_ForwardIterator __last,
|
_ForwardIterator __last,
|
||||||
int& __c)
|
int& __c)
|
||||||
{
|
{
|
||||||
if (__first != __last && '0' <= *__first && *__first <= '9')
|
if (__first != __last )
|
||||||
{
|
{
|
||||||
__c = *__first - '0';
|
int __val = __traits_.value(*__first, 10);
|
||||||
for (++__first; __first != __last && '0' <= *__first && *__first <= '9';
|
if ( __val != -1 )
|
||||||
|
{
|
||||||
|
__c = __val;
|
||||||
|
for (++__first;
|
||||||
|
__first != __last && ( __val = __traits_.value(*__first, 10)) != -1;
|
||||||
++__first)
|
++__first)
|
||||||
{
|
{
|
||||||
__c *= 10;
|
__c *= 10;
|
||||||
__c += *__first - '0';
|
__c += __val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return __first;
|
return __first;
|
||||||
|
|
Loading…
Reference in New Issue