diff -ru protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_message.cc protobuf1/src/google/protobuf/compiler/cpp/cpp_message.cc --- protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_message.cc 2016-09-05 14:20:49.000000000 +0100 +++ protobuf1/src/google/protobuf/compiler/cpp/cpp_message.cc 2016-09-05 14:30:47.284339055 +0100 @@ -1762,17 +1762,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(), options_)) { 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_); } diff -ru protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc protobuf1/src/google/protobuf/compiler/cpp/cpp_string_field.cc --- protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc 2016-07-27 22:40:30.000000000 +0100 +++ protobuf1/src/google/protobuf/compiler/cpp/cpp_string_field.cc 2016-09-05 14:25:17.645138524 +0100 @@ -360,7 +360,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"); } } diff -ru protobuf-3.0.0/src/google/protobuf/compiler/plugin.pb.cc protobuf1/src/google/protobuf/compiler/plugin.pb.cc --- protobuf-3.0.0/src/google/protobuf/compiler/plugin.pb.cc 2016-07-27 22:40:30.000000000 +0100 +++ protobuf1/src/google/protobuf/compiler/plugin.pb.cc 2016-09-05 14:25:17.645138524 +0100 @@ -118,11 +118,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() GOOGLE_ATTRIBUTE_COLD; diff -ru protobuf-3.0.0/src/google/protobuf/descriptor.pb.cc protobuf1/src/google/protobuf/descriptor.pb.cc --- protobuf-3.0.0/src/google/protobuf/descriptor.pb.cc 2016-07-27 22:40:30.000000000 +0100 +++ protobuf1/src/google/protobuf/descriptor.pb.cc 2016-09-05 14:44:42.770764933 +0100 @@ -648,57 +648,106 @@ 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 DescriptorProto_ReservedRange::default_instance_; + DescriptorProto_ReservedRange::default_instance_ = NULL; delete DescriptorProto_ReservedRange_reflection_; + DescriptorProto_ReservedRange_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 OneofOptions::default_instance_; + OneofOptions::default_instance_ = NULL; delete OneofOptions_reflection_; + OneofOptions_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; delete GeneratedCodeInfo::default_instance_; + GeneratedCodeInfo::default_instance_ = NULL; delete GeneratedCodeInfo_reflection_; + GeneratedCodeInfo_reflection_ = NULL; delete GeneratedCodeInfo_Annotation::default_instance_; + GeneratedCodeInfo_Annotation::default_instance_ = NULL; delete GeneratedCodeInfo_Annotation_reflection_; + GeneratedCodeInfo_Annotation_reflection_ = NULL; } - void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() GOOGLE_ATTRIBUTE_COLD; void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() { static bool already_here = false;