diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2013-10-03 18:16:40 +0200 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2013-10-03 16:16:40 +0000 |
commit | fc7657bb382e789ce7468950ca1c5fa0b9061ec5 (patch) | |
tree | 81cd0ed1e80d7cf449e6cfe7494c4bddb0dabe94 | |
parent | 2284b03444d6845ce6402db37f4ec43f6c755f77 (diff) | |
download | gcc-fc7657bb382e789ce7468950ca1c5fa0b9061ec5.zip gcc-fc7657bb382e789ce7468950ca1c5fa0b9061ec5.tar.gz gcc-fc7657bb382e789ce7468950ca1c5fa0b9061ec5.tar.bz2 |
del_op.cc (operator delete): Don't test for 0 before free.
2013-10-03 Marc Glisse <marc.glisse@inria.fr>
* libsupc++/del_op.cc (operator delete): Don't test for 0 before free.
* libsupc++/del_opnt.cc (free): Only declare if freestanding.
(operator delete): Qualify free with std::.
From-SVN: r203164
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/del_op.cc | 3 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/del_opnt.cc | 18 |
3 files changed, 22 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c17ca80..c09e856 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2013-10-03 Marc Glisse <marc.glisse@inria.fr> + + * libsupc++/del_op.cc (operator delete): Don't test for 0 before free. + * libsupc++/del_opnt.cc (free): Only declare if freestanding. + (operator delete): Qualify free with std::. + 2013-10-02 Jonathan Wakely <jwakely.gcc@gmail.com> Daniel Krugler <daniel.kruegler@gmail.com> diff --git a/libstdc++-v3/libsupc++/del_op.cc b/libstdc++-v3/libsupc++/del_op.cc index 2d860e1..ee446c3 100644 --- a/libstdc++-v3/libsupc++/del_op.cc +++ b/libstdc++-v3/libsupc++/del_op.cc @@ -43,6 +43,5 @@ _GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_WEAK_DEFINITION void operator delete(void* ptr) _GLIBCXX_USE_NOEXCEPT { - if (ptr) - std::free(ptr); + std::free(ptr); } diff --git a/libstdc++-v3/libsupc++/del_opnt.cc b/libstdc++-v3/libsupc++/del_opnt.cc index bb37191..a04ea40 100644 --- a/libstdc++-v3/libsupc++/del_opnt.cc +++ b/libstdc++-v3/libsupc++/del_opnt.cc @@ -24,12 +24,24 @@ // <http://www.gnu.org/licenses/>. #include <bits/c++config.h> -#include "new" -extern "C" void free (void *); +#if !_GLIBCXX_HOSTED +// A freestanding C runtime may not provide "free" -- but there is no +// other reasonable way to implement "operator delete". +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + extern "C" void free(void*); +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace +#else +# include <cstdlib> +#endif + +#include "new" _GLIBCXX_WEAK_DEFINITION void operator delete (void *ptr, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT { - free (ptr); + std::free(ptr); } |