Fix inconsistent operator delete usages

François Dumont
Thu Jan 31 21:29:00 GMT 2019

     I was writing a test which needed to override the std::nothrow 
versions of the operator new and delete to control get_temporary_buffer 
behavior and noticed that it is inconsistent with 
release_temporary_buffer in terms of new/delete operators.

     Grepping for other std::nothrow usages I found some others and 
especially one in libsupc++.

     I don't know how serious it is considering the Standard. As long as 
you stick to the libstdc++ operators it is fine. Only users overriding 
those operators will notice.

     Tested under Linux x86_64 normal mode with some failures but none 
related to this patch I think but of course you better check on your side.

     * libsupc++/ (run(void*)): Call std::nothrow delete
     * include/bits/stl_tempbuf.h (return_temporary_buffer): Likewise.
     * include/profile/impl/profiler_trace.h
     (__trace_base<>::~__trace_base()): Likewise.
     (__trace_base<>::__add_object(__stack_t)): Likewise.
     (__trace_base<>::__retire_object(__stack_t)): Likewise.

Let me know if it is a go.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: delete_nothrow.patch
Type: text/x-patch
Size: 2303 bytes
Desc: not available
URL: <>

More information about the Libstdc++ mailing list