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
This commit is contained in:
Marc Glisse 2013-10-03 18:16:40 +02:00 committed by Marc Glisse
parent 2284b03444
commit fc7657bb38
3 changed files with 22 additions and 5 deletions

View File

@ -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>

View File

@ -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);
}

View File

@ -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);
}