Only in protobuf-3.0.0: fix-protobuf diff -r -u protobuf-3.0.0-original/src/google/protobuf/compiler/cpp/cpp_message.cc protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_message.cc --- protobuf-3.0.0-original/src/google/protobuf/compiler/cpp/cpp_message.cc 2016-09-07 11:26:39.229183560 +0100 +++ protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_message.cc 2016-09-07 12:04:34.566353187 +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 -r -u protobuf-3.0.0-original/src/google/protobuf/compiler/cpp/cpp_string_field.cc protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc --- protobuf-3.0.0-original/src/google/protobuf/compiler/cpp/cpp_string_field.cc 2016-09-07 11:26:39.229183560 +0100 +++ protobuf-3.0.0/src/google/protobuf/compiler/cpp/cpp_string_field.cc 2016-09-07 11:27:41.945419167 +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 -r -u protobuf-3.0.0-original/src/google/protobuf/compiler/plugin.pb.cc protobuf-3.0.0/src/google/protobuf/compiler/plugin.pb.cc --- protobuf-3.0.0-original/src/google/protobuf/compiler/plugin.pb.cc 2016-09-07 11:26:39.477184496 +0100 +++ protobuf-3.0.0/src/google/protobuf/compiler/plugin.pb.cc 2016-09-07 11:27:41.945419167 +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 -r -u protobuf-3.0.0-original/src/google/protobuf/descriptor.pb.cc protobuf-3.0.0/src/google/protobuf/descriptor.pb.cc --- protobuf-3.0.0-original/src/google/protobuf/descriptor.pb.cc 2016-09-07 11:26:39.513184632 +0100 +++ protobuf-3.0.0/src/google/protobuf/descriptor.pb.cc 2016-09-07 11:27:41.945419167 +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; diff -r -u protobuf-3.0.0-original/src/google/protobuf/stubs/common.cc protobuf-3.0.0/src/google/protobuf/stubs/common.cc --- protobuf-3.0.0-original/src/google/protobuf/stubs/common.cc 2016-09-07 11:26:39.533184708 +0100 +++ protobuf-3.0.0/src/google/protobuf/stubs/common.cc 2016-09-07 11:52:20.658603056 +0100 @@ -441,10 +441,11 @@ for (int i = 0; i < internal::shutdown_functions->size(); i++) { internal::shutdown_functions->at(i)(); } - delete internal::shutdown_functions; - internal::shutdown_functions = NULL; - delete internal::shutdown_functions_mutex; - internal::shutdown_functions_mutex = NULL; +// delete internal::shutdown_functions; +// internal::shutdown_functions = NULL; +// delete internal::shutdown_functions_mutex; +// internal::shutdown_functions_mutex = NULL; + internal::shutdown_functions->resize(0); } #if PROTOBUF_USE_EXCEPTIONS