diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-05-28 17:00:09 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-05-28 17:00:09 +0100 |
commit | ac3efa775fc0013da35f118852a9284d26076d19 (patch) | |
tree | b246538a784f8d4fc2c49d04184b75c15fc12ef3 | |
parent | 396e67d21a3194da9d036bdb67e74edfd1030d3f (diff) | |
download | gcc-ac3efa775fc0013da35f118852a9284d26076d19.zip gcc-ac3efa775fc0013da35f118852a9284d26076d19.tar.gz gcc-ac3efa775fc0013da35f118852a9284d26076d19.tar.bz2 |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/array | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/array | 4 |
3 files changed, 8 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index aea089a..286197c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,6 +1,10 @@ 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 diff --git a/libstdc++-v3/include/debug/array b/libstdc++-v3/include/debug/array index 31d146e..411e816 100644 --- a/libstdc++-v3/include/debug/array +++ b/libstdc++-v3/include/debug/array @@ -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. diff --git a/libstdc++-v3/include/profile/array b/libstdc++-v3/include/profile/array index a90e396..5198bb3 100644 --- a/libstdc++-v3/include/profile/array +++ b/libstdc++-v3/include/profile/array @@ -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. |