Prevent '\b' from backing up into invalid memory. Fixes http://llvm.org/bugs/show_bug.cgi?id=16240. Sorry, I can not think of a good test case for this one, except by running valgrind as reported in the bug.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@185273 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f491e51ebd
commit
a9602d56de
@ -2843,6 +2843,15 @@ private:
|
|||||||
const basic_regex<_Cp, _Tp>& __e,
|
const basic_regex<_Cp, _Tp>& __e,
|
||||||
regex_constants::match_flag_type __flags);
|
regex_constants::match_flag_type __flags);
|
||||||
|
|
||||||
|
template <class _Iter, class _Ap, class _Cp, class _Tp>
|
||||||
|
friend
|
||||||
|
bool
|
||||||
|
regex_search(__wrap_iter<_Iter> __first,
|
||||||
|
__wrap_iter<_Iter> __last,
|
||||||
|
match_results<__wrap_iter<_Iter>, _Ap>& __m,
|
||||||
|
const basic_regex<_Cp, _Tp>& __e,
|
||||||
|
regex_constants::match_flag_type __flags);
|
||||||
|
|
||||||
template <class, class> friend class __lookahead;
|
template <class, class> friend class __lookahead;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5808,6 +5817,21 @@ regex_search(_BidirectionalIterator __first, _BidirectionalIterator __last,
|
|||||||
return __r;
|
return __r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class _Iter, class _Allocator, class _CharT, class _Traits>
|
||||||
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
|
bool
|
||||||
|
regex_search(__wrap_iter<_Iter> __first,
|
||||||
|
__wrap_iter<_Iter> __last,
|
||||||
|
match_results<__wrap_iter<_Iter>, _Allocator>& __m,
|
||||||
|
const basic_regex<_CharT, _Traits>& __e,
|
||||||
|
regex_constants::match_flag_type __flags = regex_constants::match_default)
|
||||||
|
{
|
||||||
|
match_results<const _CharT*> __mc;
|
||||||
|
bool __r = __e.__search(__first.base(), __last.base(), __mc, __flags);
|
||||||
|
__m.__assign(__first, __last, __mc, __flags & regex_constants::__no_update_pos);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
|
||||||
template <class _Allocator, class _CharT, class _Traits>
|
template <class _Allocator, class _CharT, class _Traits>
|
||||||
inline _LIBCPP_INLINE_VISIBILITY
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
bool
|
bool
|
||||||
@ -6045,7 +6069,7 @@ regex_iterator<_BidirectionalIterator, _CharT, _Traits>::operator++()
|
|||||||
{
|
{
|
||||||
__flags_ |= regex_constants::__no_update_pos;
|
__flags_ |= regex_constants::__no_update_pos;
|
||||||
_BidirectionalIterator __start = __match_[0].second;
|
_BidirectionalIterator __start = __match_[0].second;
|
||||||
if (__match_.length() == 0)
|
if (__match_.empty())
|
||||||
{
|
{
|
||||||
if (__start == __end_)
|
if (__start == __end_)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user