[PATCH] PR libstdc++/86954 use non-placement operator delete
Jonathan Wakely
jwakely@redhat.com
Tue Aug 14 20:19:00 GMT 2018
As explained in the PR, there's no reason to call the nothrow delete,
we can just use the normal one.
PR libstdc++/86954
* include/bits/stl_tempbuf.h (return_temporary_buffer): Use
non-placement delete.
Tested x86_64-linux, committed to trunk.
-------------- next part --------------
commit dc7ca8956ad18f583feeb55e011e1333f65fd6da
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Aug 14 20:52:44 2018 +0100
PR libstdc++/86954 use non-placement operator delete
PR libstdc++/86954
* include/bits/stl_tempbuf.h (return_temporary_buffer): Use
non-placement delete.
diff --git a/libstdc++-v3/include/bits/stl_tempbuf.h b/libstdc++-v3/include/bits/stl_tempbuf.h
index 159ee27a5d3..0abd3c12de7 100644
--- a/libstdc++-v3/include/bits/stl_tempbuf.h
+++ b/libstdc++-v3/include/bits/stl_tempbuf.h
@@ -88,10 +88,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
if (__len > __max)
__len = __max;
-
- while (__len > 0)
+
+ while (__len > 0)
{
- _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
+ _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
std::nothrow));
if (__tmp != 0)
return std::pair<_Tp*, ptrdiff_t>(__tmp, __len);
@@ -110,7 +110,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
inline void
return_temporary_buffer(_Tp* __p)
- { ::operator delete(__p, std::nothrow); }
+ { ::operator delete(__p); }
/**
More information about the Libstdc++
mailing list