diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2017-04-06 16:47:18 -0700 |
---|---|---|
committer | Feng Xiao <xfxyjwf@gmail.com> | 2017-04-06 16:47:18 -0700 |
commit | ee9c7f17e953243943181bcbc84590118be6b3c6 (patch) | |
tree | 10f14f7dc9632c66d249b9bee9438fcdf77c6bc5 | |
parent | 21b0b3ca36dbe0954adce38626e4d36c21135982 (diff) | |
download | protobuf-ee9c7f17e953243943181bcbc84590118be6b3c6.tar.gz protobuf-ee9c7f17e953243943181bcbc84590118be6b3c6.tar.bz2 protobuf-ee9c7f17e953243943181bcbc84590118be6b3c6.zip |
Cleanup reflection objects for map entry.
-rw-r--r-- | src/google/protobuf/compiler/cpp/cpp_file.cc | 9 | ||||
-rw-r--r-- | src/google/protobuf/struct.pb.cc | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_file.cc b/src/google/protobuf/compiler/cpp/cpp_file.cc index 83e68c12..e0542ae8 100644 --- a/src/google/protobuf/compiler/cpp/cpp_file.cc +++ b/src/google/protobuf/compiler/cpp/cpp_file.cc @@ -751,6 +751,15 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) { message_generators_[i]->GenerateShutdownCode(printer); } + if (HasDescriptorMethods(file_, options_)) { + for (int i = 0; i < message_generators_.size(); i++) { + if (!IsMapEntryMessage(message_generators_[i]->descriptor_)) continue; + printer->Print( + "delete file_level_metadata[$index$].reflection;\n", + "index", SimpleItoa(i)); + } + } + printer->Outdent(); printer->Print( "}\n\n"); diff --git a/src/google/protobuf/struct.pb.cc b/src/google/protobuf/struct.pb.cc index 825810b1..207e9efe 100644 --- a/src/google/protobuf/struct.pb.cc +++ b/src/google/protobuf/struct.pb.cc @@ -133,6 +133,7 @@ void TableStruct::Shutdown() { delete file_level_metadata[2].reflection; _ListValue_default_instance_.Shutdown(); delete file_level_metadata[3].reflection; + delete file_level_metadata[0].reflection; } void TableStruct::InitDefaultsImpl() { |