re PR libstdc++/65352 (array<T,0>::begin()/end() etc. forms a null reference and breaks on clang+ubsan)

PR libstdc++/65352
	* include/profile/array (array::data): Use _S_ptr.
	* include/debug/array (array::data): Likewise.

From-SVN: r223838
This commit is contained in:
Jonathan Wakely 2015-05-28 17:00:09 +01:00 committed by Jonathan Wakely
parent 396e67d21a
commit ac3efa775f
3 changed files with 8 additions and 4 deletions

View File

@ -1,5 +1,9 @@
2015-05-28 Jonathan Wakely <jwakely@redhat.com> 2015-05-28 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/65352
* include/profile/array (array::data): Use _S_ptr.
* include/debug/array (array::data): Likewise.
PR libstdc++/65352 PR libstdc++/65352
* include/std/array (__array_traits::_S_ptr): New function. * include/std/array (__array_traits::_S_ptr): New function.
(array::data): Use _S_ptr to avoid creating invalid reference. (array::data): Use _S_ptr to avoid creating invalid reference.

View File

@ -216,11 +216,11 @@ namespace __debug
pointer pointer
data() noexcept data() noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } { return _AT_Type::_S_ptr(_M_elems); }
const_pointer const_pointer
data() const noexcept data() const noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } { return _AT_Type::_S_ptr(_M_elems); }
}; };
// Array comparisons. // Array comparisons.

View File

@ -178,11 +178,11 @@ namespace __profile
pointer pointer
data() noexcept data() noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } { return _AT_Type::_S_ptr(_M_elems); }
const_pointer const_pointer
data() const noexcept data() const noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } { return _AT_Type::_S_ptr(_M_elems); }
}; };
// Array comparisons. // Array comparisons.