Commit ac3efa77 by Jonathan Wakely Committed by Jonathan Wakely

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

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
parent 396e67d2
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
* include/std/array (__array_traits::_S_ptr): New function.
(array::data): Use _S_ptr to avoid creating invalid reference.
* testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust
......
......@@ -216,11 +216,11 @@ namespace __debug
pointer
data() noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
{ return _AT_Type::_S_ptr(_M_elems); }
const_pointer
data() const noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
{ return _AT_Type::_S_ptr(_M_elems); }
};
// Array comparisons.
......
......@@ -178,11 +178,11 @@ namespace __profile
pointer
data() noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
{ return _AT_Type::_S_ptr(_M_elems); }
const_pointer
data() const noexcept
{ return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); }
{ return _AT_Type::_S_ptr(_M_elems); }
};
// Array comparisons.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment