|
@@ -2276,7 +2276,9 @@ basic_string<_CharT, _Traits, _Allocator>::__append_forward_unsafe(
|
|
size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
|
|
size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
|
|
if (__n)
|
|
if (__n)
|
|
{
|
|
{
|
|
- if ( __ptr_in_range(&*__first, data(), data() + size()))
|
|
|
|
|
|
+ typedef typename iterator_traits<_ForwardIterator>::reference _CharRef;
|
|
|
|
+ _CharRef __tmp_ref = *__first;
|
|
|
|
+ if (__ptr_in_range(_VSTD::addressof(__tmp_ref), data(), data() + size()))
|
|
{
|
|
{
|
|
const basic_string __temp (__first, __last, __alloc());
|
|
const basic_string __temp (__first, __last, __alloc());
|
|
append(__temp.data(), __temp.size());
|
|
append(__temp.data(), __temp.size());
|
|
@@ -2440,7 +2442,9 @@ basic_string<_CharT, _Traits, _Allocator>::insert(const_iterator __pos, _Forward
|
|
size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
|
|
size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
|
|
if (__n)
|
|
if (__n)
|
|
{
|
|
{
|
|
- if ( __ptr_in_range(&*__first, data(), data() + size()))
|
|
|
|
|
|
+ typedef typename iterator_traits<_ForwardIterator>::reference _CharRef;
|
|
|
|
+ _CharRef __tmp_char = *__first;
|
|
|
|
+ if (__ptr_in_range(_VSTD::addressof(__tmp_char), data(), data() + size()))
|
|
{
|
|
{
|
|
const basic_string __temp(__first, __last, __alloc());
|
|
const basic_string __temp(__first, __last, __alloc());
|
|
return insert(__pos, __temp.data(), __temp.data() + __temp.size());
|
|
return insert(__pos, __temp.data(), __temp.data() + __temp.size());
|