aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/message.cc
diff options
context:
space:
mode:
authorGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-21 17:28:51 -0800
committerGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-21 17:45:36 -0800
commit7a00a1e42495495cef8bc20821b9554c6afb3ab5 (patch)
treed10d72f5149816dc377e67d2be12c8720b33d2fc /src/google/protobuf/message.cc
parentff35de3ddd7ff844a72434c6cc76f3c84a852622 (diff)
Add shutdown code for several newly introduced leaks;
Disable commandline interface test for heap check tests. Change-Id: I02aa2ad9704e3c70dcecae8b3b3557b18607d455
Diffstat (limited to 'src/google/protobuf/message.cc')
-rw-r--r--src/google/protobuf/message.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc
index afe95461..28955b35 100644
--- a/src/google/protobuf/message.cc
+++ b/src/google/protobuf/message.cc
@@ -441,6 +441,30 @@ const internal::RepeatedFieldAccessor* Reflection::RepeatedFieldAccessor(
}
namespace internal {
+namespace {
+void ShutdownRepeatedFieldAccessor() {
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<int32> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<uint32> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<int64> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<uint64> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<float> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<double> >::ShutDown();
+ Singleton<internal::RepeatedFieldPrimitiveAccessor<bool> >::ShutDown();
+ Singleton<internal::RepeatedPtrFieldStringAccessor>::ShutDown();
+ Singleton<internal::RepeatedPtrFieldMessageAccessor>::ShutDown();
+ Singleton<internal::MapFieldAccessor>::ShutDown();
+};
+
+struct ShutdownRepeatedFieldRegister {
+ ShutdownRepeatedFieldRegister() {
+ OnShutdown(&ShutdownRepeatedFieldAccessor);
+ }
+} shutdown_;
+
+} // namesapce
+} // namespace internal
+
+namespace internal {
// Macro defined in repeated_field.h. We can only define the Message-specific
// GenericTypeHandler specializations here because we depend on Message, which
// is not part of proto2-lite hence is not available in repeated_field.h.