From 778178479626b0e5b4de0701103a1bb0a067702d Mon Sep 17 00:00:00 2001 From: Gerben Stavenga Date: Wed, 2 Aug 2017 18:25:28 -0700 Subject: Add destructors for default instances to the shutdown code. Verified test succeed under draconian heap checker --- src/google/protobuf/compiler/plugin.pb.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/google/protobuf/compiler/plugin.pb.cc') diff --git a/src/google/protobuf/compiler/plugin.pb.cc b/src/google/protobuf/compiler/plugin.pb.cc index 6753d57d..5d7dad98 100644 --- a/src/google/protobuf/compiler/plugin.pb.cc +++ b/src/google/protobuf/compiler/plugin.pb.cc @@ -145,10 +145,14 @@ void TableStruct::InitDefaultsImpl() { ::google::protobuf::internal::InitProtobufDefaults(); ::google::protobuf::protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults(); _Version_default_instance_.DefaultConstruct(); - _CodeGeneratorRequest_default_instance_.DefaultConstruct(); - _CodeGeneratorResponse_File_default_instance_.DefaultConstruct(); - _CodeGeneratorResponse_default_instance_.DefaultConstruct(); - _CodeGeneratorRequest_default_instance_.get_mutable()->compiler_version_ = const_cast< ::google::protobuf::compiler::Version*>( + ::google::protobuf::internal::OnShutdownDestroyMessage( + &_Version_default_instance_);_CodeGeneratorRequest_default_instance_.DefaultConstruct(); + ::google::protobuf::internal::OnShutdownDestroyMessage( + &_CodeGeneratorRequest_default_instance_);_CodeGeneratorResponse_File_default_instance_.DefaultConstruct(); + ::google::protobuf::internal::OnShutdownDestroyMessage( + &_CodeGeneratorResponse_File_default_instance_);_CodeGeneratorResponse_default_instance_.DefaultConstruct(); + ::google::protobuf::internal::OnShutdownDestroyMessage( + &_CodeGeneratorResponse_default_instance_);_CodeGeneratorRequest_default_instance_.get_mutable()->compiler_version_ = const_cast< ::google::protobuf::compiler::Version*>( ::google::protobuf::compiler::Version::internal_default_instance()); } @@ -776,7 +780,7 @@ CodeGeneratorRequest::~CodeGeneratorRequest() { void CodeGeneratorRequest::SharedDtor() { parameter_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - delete compiler_version_; + if (this != internal_default_instance()) delete compiler_version_; } void CodeGeneratorRequest::SetCachedSize(int size) const { -- cgit v1.2.3