2013-10-03 Marc Glisse <marc.glisse@inria.fr>
authorglisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Oct 2013 16:16:40 +0000 (16:16 +0000)
committerglisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Oct 2013 16:16:40 +0000 (16:16 +0000)
* 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::.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203164 138bc75d-0d04-0410-961f-82ee72b054a4

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

index c17ca80..c09e856 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 2d860e1..ee446c3 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 bb37191..a04ea40 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);
 }