diff --git a/src/google/protobuf/map.h b/src/google/protobuf/map.h index c16fbed2..96d2f201 100644 --- a/src/google/protobuf/map.h +++ b/src/google/protobuf/map.h @@ -176,14 +176,12 @@ class Map { template 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 @@ -201,10 +199,10 @@ class Map { return arena_ != other.arena_; } - // To support Visual Studio 2008 - size_type max_size() const { - return std::numeric_limits::max(); - } + // To support Visual Studio 2008 + size_type max_size() const { + return std::numeric_limits::max(); + } private: Arena* arena_; diff --git a/src/google/protobuf/repeated_field.h b/src/google/protobuf/repeated_field.h index 5a2fb409..14f46298 100644 --- a/src/google/protobuf/repeated_field.h +++ b/src/google/protobuf/repeated_field.h @@ -1125,7 +1125,9 @@ template inline typename RepeatedField::iterator RepeatedField::erase( const_iterator first, const_iterator last) { size_type first_offset = first - cbegin(); - Truncate(std::copy(last, cend(), begin() + first_offset) - cbegin()); + if (first != last) { + Truncate(std::copy(last, cend(), begin() + first_offset) - cbegin()); + } return begin() + first_offset; }