=== modified file 'src/google/protobuf/compiler/cpp/cpp_message.cc' --- src/google/protobuf/compiler/cpp/cpp_message.cc 2014-10-24 13:55:53 +0000 +++ src/google/protobuf/compiler/cpp/cpp_message.cc 2016-09-05 09:55:18 +0000 @@ -1131,17 +1131,20 @@ void MessageGenerator:: GenerateShutdownCode(io::Printer* printer) { printer->Print( - "delete $classname$::default_instance_;\n", + "delete $classname$::default_instance_;\n" + "$classname$::default_instance_ = NULL;\n", "classname", classname_); if (HasDescriptorMethods(descriptor_->file())) { if (descriptor_->oneof_decl_count() > 0) { printer->Print( - "delete $classname$_default_oneof_instance_;\n", + "delete $classname$_default_oneof_instance_;\n" + "$classname$_default_oneof_instance_ = NULL;\n", "classname", classname_); } printer->Print( - "delete $classname$_reflection_;\n", + "delete $classname$_reflection_;\n" + "$classname$_reflection_ = NULL;\n", "classname", classname_); } === modified file 'src/google/protobuf/compiler/cpp/cpp_string_field.cc' --- src/google/protobuf/compiler/cpp/cpp_string_field.cc 2014-10-24 13:55:53 +0000 +++ src/google/protobuf/compiler/cpp/cpp_string_field.cc 2016-09-05 09:55:18 +0000 @@ -267,7 +267,8 @@ GenerateShutdownCode(io::Printer* printer) const { if (!descriptor_->default_value_string().empty()) { printer->Print(variables_, - "delete $classname$::$default_variable$;\n"); + "delete $classname$::$default_variable$;\n" + "$classname$::$default_variable$ = NULL;\n"); } } === modified file 'src/google/protobuf/compiler/plugin.pb.cc' --- src/google/protobuf/compiler/plugin.pb.cc 2014-09-02 16:57:20 +0000 +++ src/google/protobuf/compiler/plugin.pb.cc 2016-09-05 09:55:18 +0000 @@ -115,11 +115,17 @@ void protobuf_ShutdownFile_google_2fprotobuf_2fcompiler_2fplugin_2eproto() { delete CodeGeneratorRequest::default_instance_; + CodeGeneratorRequest::default_instance_ = NULL; delete CodeGeneratorRequest_reflection_; + CodeGeneratorRequest_reflection_ = NULL; delete CodeGeneratorResponse::default_instance_; + CodeGeneratorResponse::default_instance_ = NULL; delete CodeGeneratorResponse_reflection_; + CodeGeneratorResponse_reflection_ = NULL; delete CodeGeneratorResponse_File::default_instance_; + CodeGeneratorResponse_File::default_instance_ = NULL; delete CodeGeneratorResponse_File_reflection_; + CodeGeneratorResponse_File_reflection_ = NULL; } void protobuf_AddDesc_google_2fprotobuf_2fcompiler_2fplugin_2eproto() { === modified file 'src/google/protobuf/descriptor.pb.cc' --- src/google/protobuf/descriptor.pb.cc 2014-09-02 16:57:20 +0000 +++ src/google/protobuf/descriptor.pb.cc 2016-09-05 09:55:18 +0000 @@ -547,47 +547,89 @@ void protobuf_ShutdownFile_google_2fprotobuf_2fdescriptor_2eproto() { delete FileDescriptorSet::default_instance_; + FileDescriptorSet::default_instance_ = NULL; delete FileDescriptorSet_reflection_; + FileDescriptorSet_reflection_ = NULL; delete FileDescriptorProto::default_instance_; + FileDescriptorProto::default_instance_ = NULL; delete FileDescriptorProto_reflection_; + FileDescriptorProto_reflection_ = NULL; delete DescriptorProto::default_instance_; + DescriptorProto::default_instance_ = NULL; delete DescriptorProto_reflection_; + DescriptorProto_reflection_ = NULL; delete DescriptorProto_ExtensionRange::default_instance_; + DescriptorProto_ExtensionRange::default_instance_ = NULL; delete DescriptorProto_ExtensionRange_reflection_; + DescriptorProto_ExtensionRange_reflection_ = NULL; delete FieldDescriptorProto::default_instance_; + FieldDescriptorProto::default_instance_ = NULL; delete FieldDescriptorProto_reflection_; + FieldDescriptorProto_reflection_ = NULL; delete OneofDescriptorProto::default_instance_; + OneofDescriptorProto::default_instance_ = NULL; delete OneofDescriptorProto_reflection_; + OneofDescriptorProto_reflection_ = NULL; delete EnumDescriptorProto::default_instance_; + EnumDescriptorProto::default_instance_ = NULL; delete EnumDescriptorProto_reflection_; + EnumDescriptorProto_reflection_ = NULL; delete EnumValueDescriptorProto::default_instance_; + EnumValueDescriptorProto::default_instance_ = NULL; delete EnumValueDescriptorProto_reflection_; + EnumValueDescriptorProto_reflection_ = NULL; delete ServiceDescriptorProto::default_instance_; + ServiceDescriptorProto::default_instance_ = NULL; delete ServiceDescriptorProto_reflection_; + ServiceDescriptorProto_reflection_ = NULL; delete MethodDescriptorProto::default_instance_; + MethodDescriptorProto::default_instance_ = NULL; delete MethodDescriptorProto_reflection_; + MethodDescriptorProto_reflection_ = NULL; delete FileOptions::default_instance_; + FileOptions::default_instance_ = NULL; delete FileOptions_reflection_; + FileOptions_reflection_ = NULL; delete MessageOptions::default_instance_; + MessageOptions::default_instance_ = NULL; delete MessageOptions_reflection_; + MessageOptions_reflection_ = NULL; delete FieldOptions::default_instance_; + FieldOptions::default_instance_ = NULL; delete FieldOptions_reflection_; + FieldOptions_reflection_ = NULL; delete EnumOptions::default_instance_; + EnumOptions::default_instance_ = NULL; delete EnumOptions_reflection_; + EnumOptions_reflection_ = NULL; delete EnumValueOptions::default_instance_; + EnumValueOptions::default_instance_ = NULL; delete EnumValueOptions_reflection_; + EnumValueOptions_reflection_ = NULL; delete ServiceOptions::default_instance_; + ServiceOptions::default_instance_ = NULL; delete ServiceOptions_reflection_; + ServiceOptions_reflection_ = NULL; delete MethodOptions::default_instance_; + MethodOptions::default_instance_ = NULL; delete MethodOptions_reflection_; + MethodOptions_reflection_ = NULL; delete UninterpretedOption::default_instance_; + UninterpretedOption::default_instance_ = NULL; delete UninterpretedOption_reflection_; + UninterpretedOption_reflection_ = NULL; delete UninterpretedOption_NamePart::default_instance_; + UninterpretedOption_NamePart::default_instance_ = NULL; delete UninterpretedOption_NamePart_reflection_; + UninterpretedOption_NamePart_reflection_ = NULL; delete SourceCodeInfo::default_instance_; + SourceCodeInfo::default_instance_ = NULL; delete SourceCodeInfo_reflection_; + SourceCodeInfo_reflection_ = NULL; delete SourceCodeInfo_Location::default_instance_; + SourceCodeInfo_Location::default_instance_ = NULL; delete SourceCodeInfo_Location_reflection_; + SourceCodeInfo_Location_reflection_ = NULL; } void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() {