]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
del_op.cc (operator delete): Don't test for 0 before free.
authorMarc Glisse <marc.glisse@inria.fr>
Thu, 3 Oct 2013 16:16:40 +0000 (18:16 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Thu, 3 Oct 2013 16:16:40 +0000 (16:16 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/del_op.cc
libstdc++-v3/libsupc++/del_opnt.cc

index c17ca807fac3acc396ce53083cdfce4d16cea9d2..c09e8561e66b9a3431f3c6b50ca22c3388f131bf 100644 (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>
 
index 2d860e18622b7a111d940490fc3ce7291b62beec..ee446c36f14666f4471d2dd2255b70b7f307723b 100644 (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);
 }
index bb37191caedeea55b325e4b2abc0c54ea3159469..a04ea401b1c1d12ea0815240949ae8d9f0370a53 100644 (file)
 // <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);
 }