diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 8e0b163078..b260a77fa3 100644 --- a/src/google/protobuf/descriptor.cc +++ b/src/google/protobuf/descriptor.cc @@ -6183,9 +6183,12 @@ void DescriptorBuilder::BuildOneof(const OneofDescriptorProto& proto, result->fields_ = nullptr; // Copy options. - result->options_ = - AllocateOptions(proto, result, OneofDescriptorProto::kOptionsFieldNumber, - "google.protobuf.OneofOptions", alloc); + { + OneofOptions* options = AllocateOptions( + proto, result, OneofDescriptorProto::kOptionsFieldNumber, + "google.protobuf.OneofOptions", alloc); + result->options_ = options; // Set to default_instance later if necessary. + } AddSymbol(result->full_name(), parent, result->name(), proto, Symbol(result)); } diff --git a/src/google/protobuf/descriptor.h b/src/google/protobuf/descriptor.h index 95204c7c09..42d8ab34b1 100644 --- a/src/google/protobuf/descriptor.h +++ b/src/google/protobuf/descriptor.h @@ -1109,6 +1109,7 @@ class PROTOBUF_EXPORT OneofDescriptor : private internal::SymbolBase { const OneofOptions& options() const; + // See Descriptor::CopyTo(). void CopyTo(OneofDescriptorProto* proto) const;