aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorliujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2012-12-05 06:18:10 +0000
committerliujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2012-12-05 06:18:10 +0000
commit329d103b3e0f80fff5f9d1ed5a4be06d6f91b49f (patch)
tree8b680c84e04acfff5a07beeebc036e3c120f9a8b /src
parentf5d5b4de92710812929d9c82250959cb73daa11b (diff)
downloadprotobuf-329d103b3e0f80fff5f9d1ed5a4be06d6f91b49f.tar.gz
protobuf-329d103b3e0f80fff5f9d1ed5a4be06d6f91b49f.tar.bz2
protobuf-329d103b3e0f80fff5f9d1ed5a4be06d6f91b49f.zip
Set pointers to NULL after shutdown, so the shutdown function can be called for multiple times.
Diffstat (limited to 'src')
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_message.cc6
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_string_field.cc3
-rw-r--r--src/google/protobuf/compiler/plugin.pb.cc6
-rw-r--r--src/google/protobuf/descriptor.pb.cc40
4 files changed, 52 insertions, 3 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index 1ea4f13d..85f85a57 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -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_);
}
diff --git a/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/src/google/protobuf/compiler/cpp/cpp_string_field.cc
index 9c0911ac..81d06549 100644
--- a/src/google/protobuf/compiler/cpp/cpp_string_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_string_field.cc
@@ -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");
}
}
diff --git a/src/google/protobuf/compiler/plugin.pb.cc b/src/google/protobuf/compiler/plugin.pb.cc
index 65abeafc..874bf029 100644
--- a/src/google/protobuf/compiler/plugin.pb.cc
+++ b/src/google/protobuf/compiler/plugin.pb.cc
@@ -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() {
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 65379f4d..c350d455 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -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() {