Commit 509b778f by Jonathan Wakely Committed by Jonathan Wakely

Define missing delete operators in libstdc++ testsuite

	* 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
parent e93a101f
2016-07-21 Jonathan Wakely <jwakely@redhat.com> 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 * testsuite/21_strings/basic_string/modifiers/append/char/1.cc: Fix
reads past the end of strings. reads past the end of strings.
* testsuite/21_strings/basic_string/operations/compare/char/1.cc: * testsuite/21_strings/basic_string/operations/compare/char/1.cc:
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
unsigned int zero_sized_news = 0; 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. */ /* malloc(0) is unpredictable; avoid it. */
if (size == 0) if (size == 0)
...@@ -45,6 +45,14 @@ void operator delete(void *ptr) throw() ...@@ -45,6 +45,14 @@ void operator delete(void *ptr) throw()
std::free(ptr); 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 // http://gcc.gnu.org/ml/libstdc++/2007-09/msg00006.html
void test01() void test01()
{ {
...@@ -57,7 +65,7 @@ void test01() ...@@ -57,7 +65,7 @@ void test01()
VERIFY( zero_sized_news == 0 ); VERIFY( zero_sized_news == 0 );
v->resize(10); v->resize(10);
delete(v); delete v;
VERIFY( zero_sized_news == 0 ); VERIFY( zero_sized_news == 0 );
} }
......
...@@ -64,6 +64,13 @@ void operator delete(void* p) throw() ...@@ -64,6 +64,13 @@ void operator delete(void* p) throw()
std::free(p); std::free(p);
} }
void operator delete(void* p, const std::nothrow_t&) throw()
{
if (p)
std::free(p);
}
#endif // _GLIBCXX_TESTSUITE_NEW_OPERATORS_H #endif // _GLIBCXX_TESTSUITE_NEW_OPERATORS_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment