diff options
author | Mike Kruskal <mkruskal@google.com> | 2023-11-17 15:17:59 -0800 |
---|---|---|
committer | Mike Kruskal <mkruskal@google.com> | 2023-11-17 15:41:40 -0800 |
commit | 3d5c709ebe01f1f9f3d3345cd4239e239081f8fd (patch) | |
tree | 4c82bff336cd1b3a6c917c26f1b5dfaccaac9290 | |
parent | c529459e96c01be6e077957860e92309f935bd04 (diff) | |
download | protobuf-3d5c709ebe01f1f9f3d3345cd4239e239081f8fd.tar.gz |
Register a shutdown delete for C++ feature defaults
Fixes #14794
PiperOrigin-RevId: 583499526
-rw-r--r-- | src/google/protobuf/descriptor.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 5be4ddf37..8fe803fba 100644 --- a/src/google/protobuf/descriptor.cc +++ b/src/google/protobuf/descriptor.cc @@ -1092,14 +1092,16 @@ bool AllowedExtendeeInProto3(const std::string& name) { } const FeatureSetDefaults& GetCppFeatureSetDefaults() { - static const FeatureSetDefaults* default_spec = [] { - auto* defaults = new FeatureSetDefaults(); - internal::ParseNoReflection( - absl::string_view{PROTOBUF_INTERNAL_CPP_EDITION_DEFAULTS, - sizeof(PROTOBUF_INTERNAL_CPP_EDITION_DEFAULTS) - 1}, - *defaults); - return defaults; - }(); + static const FeatureSetDefaults* default_spec = + internal::OnShutdownDelete([] { + auto* defaults = new FeatureSetDefaults(); + internal::ParseNoReflection( + absl::string_view{ + PROTOBUF_INTERNAL_CPP_EDITION_DEFAULTS, + sizeof(PROTOBUF_INTERNAL_CPP_EDITION_DEFAULTS) - 1}, + *defaults); + return defaults; + }()); return *default_spec; } |