aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kruskal <mkruskal@google.com>2023-11-17 15:17:59 -0800
committerMike Kruskal <mkruskal@google.com>2023-11-17 15:41:40 -0800
commit3d5c709ebe01f1f9f3d3345cd4239e239081f8fd (patch)
tree4c82bff336cd1b3a6c917c26f1b5dfaccaac9290
parentc529459e96c01be6e077957860e92309f935bd04 (diff)
downloadprotobuf-3d5c709ebe01f1f9f3d3345cd4239e239081f8fd.tar.gz
Register a shutdown delete for C++ feature defaults
Fixes #14794 PiperOrigin-RevId: 583499526
-rw-r--r--src/google/protobuf/descriptor.cc18
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;
}