Set pointers to NULL after shutdown, so the shutdown function can be called for multiple times.
This commit is contained in:
parent
f5d5b4de92
commit
329d103b3e
4 changed files with 52 additions and 3 deletions
|
@ -857,12 +857,14 @@ GenerateDefaultInstanceInitializer(io::Printer* printer) {
|
|||
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())) {
|
||||
printer->Print(
|
||||
"delete $classname$_reflection_;\n",
|
||||
"delete $classname$_reflection_;\n"
|
||||
"$classname$_reflection_ = NULL;\n",
|
||||
"classname", classname_);
|
||||
}
|
||||
|
||||
|
|
|
@ -251,7 +251,8 @@ void StringFieldGenerator::
|
|||
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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -115,11 +115,17 @@ void protobuf_RegisterTypes(const ::std::string&) {
|
|||
|
||||
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() {
|
||||
|
|
|
@ -518,45 +518,85 @@ void protobuf_RegisterTypes(const ::std::string&) {
|
|||
|
||||
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 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() {
|
||||
|
|
Loading…
Add table
Reference in a new issue