regex.h (regex_traits<>::transform_primary): Avoid past-the-end dereferences.
2013-08-16 Tim Shen <timshen91@gmail.com> * include/bits/regex.h (regex_traits<>::transform_primary): Avoid past-the-end dereferences. From-SVN: r201783
This commit is contained in:
parent
639dc669ec
commit
5073d50905
|
@ -1,3 +1,8 @@
|
|||
2013-08-16 Tim Shen <timshen91@gmail.com>
|
||||
|
||||
* include/bits/regex.h (regex_traits<>::transform_primary):
|
||||
Avoid past-the-end dereferences.
|
||||
|
||||
2013-08-14 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR libstdc++/58163
|
||||
|
|
|
@ -219,20 +219,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
template<typename _Fwd_iter>
|
||||
string_type
|
||||
transform_primary(_Fwd_iter __first, _Fwd_iter __last) const
|
||||
{
|
||||
__try
|
||||
{
|
||||
typedef std::ctype<char_type> __ctype_type;
|
||||
const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale));
|
||||
std::vector<char_type> __v(__first, __last);
|
||||
std::vector<char_type> __s(__first, __last);
|
||||
// FIXME : this is not entirely correct
|
||||
__fctyp.tolower(&*__v.begin(), &*__v.end());
|
||||
return this->transform(&*__v.begin(), &*__v.end());
|
||||
}
|
||||
__catch (std::bad_cast)
|
||||
{
|
||||
}
|
||||
return string_type();
|
||||
__fctyp.tolower(__s.data(), __s.data() + __s.size());
|
||||
return this->transform(__s.data(), __s.data() + __s.size());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -572,7 +565,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
std::string __s(__last - __first, '?');
|
||||
__fctyp.narrow(__first, __last, '?', &__s[0]);
|
||||
__cctyp.tolower(&*__s.begin(), &*__s.end());
|
||||
__cctyp.tolower(&*__s.begin(), &*__s.begin() + __s.size());
|
||||
for (_ClassnameEntry* __it = __classnames;
|
||||
__it < *(&__classnames + 1);
|
||||
++__it)
|
||||
|
|
Loading…
Reference in New Issue