Fix MapAllocator::destroy() bug.
destroy() should always call the destructor because the caller may rely on the destructor to do clean-ups.
This commit is contained in:
parent
802e1848ad
commit
5a9be2c6f6
1 changed files with 6 additions and 8 deletions
|
@ -176,14 +176,12 @@ class Map {
|
|||
|
||||
template<class NodeType>
|
||||
void destroy(NodeType* p) {
|
||||
if (arena_ == NULL) p->~NodeType();
|
||||
p->~NodeType();
|
||||
}
|
||||
#else
|
||||
void construct(pointer p, const_reference t) { new (p) value_type(t); }
|
||||
|
||||
void destroy(pointer p) {
|
||||
if (arena_ == NULL) p->~value_type();
|
||||
}
|
||||
void destroy(pointer p) { p->~value_type(); }
|
||||
#endif
|
||||
|
||||
template <typename X>
|
||||
|
@ -201,10 +199,10 @@ class Map {
|
|||
return arena_ != other.arena_;
|
||||
}
|
||||
|
||||
// To support Visual Studio 2008
|
||||
size_type max_size() const {
|
||||
return std::numeric_limits<size_type>::max();
|
||||
}
|
||||
// To support Visual Studio 2008
|
||||
size_type max_size() const {
|
||||
return std::numeric_limits<size_type>::max();
|
||||
}
|
||||
|
||||
private:
|
||||
Arena* arena_;
|
||||
|
|
Loading…
Add table
Reference in a new issue