Define missing delete operators in libstdc++ testsuite
authorJonathan Wakely <jwakely@redhat.com>
Thu, 21 Jul 2016 19:38:57 +0000 (20:38 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 21 Jul 2016 19:38:57 +0000 (20:38 +0100)
* testsuite/23_containers/vector/zero_sized_allocations.cc:
Define sized deallocation function.
* testsuite/util/testsuite_new_operators.h:
(operator delete(void*, const std::nothrow_t&)): Define nothrow
deallocation function.

From-SVN: r238610

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
libstdc++-v3/testsuite/util/testsuite_new_operators.h

index 7ad9478..9a0a71b 100644 (file)
@@ -1,5 +1,11 @@
 2016-07-21  Jonathan Wakely  <jwakely@redhat.com>
 
+       * testsuite/23_containers/vector/zero_sized_allocations.cc:
+       Define sized deallocation function.
+       * testsuite/util/testsuite_new_operators.h:
+       (operator delete(void*, const std::nothrow_t&)): Define nothrow
+       deallocation function.
+
        * testsuite/21_strings/basic_string/modifiers/append/char/1.cc: Fix
        reads past the end of strings.
        * testsuite/21_strings/basic_string/operations/compare/char/1.cc:
index 236b82f..74fa95c 100644 (file)
@@ -22,7 +22,7 @@
 
 unsigned int zero_sized_news = 0;
 
-void *operator new(size_t size) throw (std::bad_alloc)
+void *operator new(std::size_t size) throw (std::bad_alloc)
 {
   /* malloc(0) is unpredictable; avoid it.  */
   if (size == 0)
@@ -45,6 +45,14 @@ void operator delete(void *ptr) throw()
     std::free(ptr);
 }
 
+#if __cpp_sized_deallocation
+void operator delete(void *ptr, std::size_t) throw()
+{
+  if (ptr != 0)
+    std::free(ptr);
+}
+#endif
+
 // http://gcc.gnu.org/ml/libstdc++/2007-09/msg00006.html
 void test01()
 {
@@ -57,7 +65,7 @@ void test01()
   VERIFY( zero_sized_news == 0 );
 
   v->resize(10);
-  delete(v);
+  delete v;
   VERIFY( zero_sized_news == 0 );
 }
 
index 70603fa..6713fb8 100644 (file)
@@ -64,6 +64,13 @@ void operator delete(void* p) throw()
     std::free(p);
 }
 
+void operator delete(void* p, const std::nothrow_t&) throw()
+{
+  if (p)
+    std::free(p);
+}
+
+
 #endif // _GLIBCXX_TESTSUITE_NEW_OPERATORS_H