This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Still waiting for this (I hope) last fix before gcc 9 release... We could perhaps make: _Pointer_adapter(element_type* __arg = 0)explicit to find out if there are other places where we miss to properly call pointer_traits<>::pointer_to. But I aren't sure we can do it in this extension and I haven't tried yet.
François On 12/16/18 2:16 PM, François Dumont wrote:
Gentle reminder, we still have this issue pending. * include/bits/hashtable_policy.h (_Hashtable_alloc<>::_M_deallocate_node_ptr(__node_type*)): New. (_Hashtable_alloc<>::_M_deallocate_node(__node_type*)): Use latter. (_ReuseOrAllocNode<>::operator<_Arg>()(_Arg&&)): Likewise. * libstdc++-v3/testsuite/util/testsuite_allocator.h (CustomPointerAlloc<>::allocate(size_t, pointer)): Replace by...(CustomPointerAlloc<>::allocate(size_t, const_void_pointer)): ...this.François On 11/29/18 7:08 AM, François Dumont wrote:I am unclear about this patch, is it accepted ? On 11/19/18 10:19 PM, François Dumont wrote:On 11/19/18 1:34 PM, Jonathan Wakely wrote:On 10/11/18 22:40 +0100, François Dumont wrote:While working on a hashtable enhancement I noticed that we are not using the correct method to deallocate node if the constructor throws in _ReuseOrAllocNode operator(). I had to introduce a new _M_deallocate_node_ptr for that as node value shall not be destroy again.I also check other places and noticed that a __node_type destructor call was missing.That's intentional. The type has a trivial destructor, so its storage can just be reused, we don't need to destroy it.Ok, do you want to also remove the other call to ~__node_type() then ? Here is the updated patch and the right ChangeLog entry: * include/bits/hashtable_policy.h (_Hashtable_alloc<>::_M_deallocate_node_ptr(__node_type*)): New. (_Hashtable_alloc<>::_M_deallocate_node(__node_type*)): Use latter. (_ReuseOrAllocNode<>::operator<_Arg>()(_Arg&&)): Likewise. (_Hashtable_alloc<>::_M_allocate_node): Add ~__node_type call. * libstdc++-v3/testsuite/util/testsuite_allocator.h (CustomPointerAlloc<>::allocate(size_t, pointer)): Replace by...(CustomPointerAlloc<>::allocate(size_t, const_void_pointer)): ...this.* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add check. Ok to commit ? François
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |