From 3d5c709ebe01f1f9f3d3345cd4239e239081f8fd Mon Sep 17 00:00:00 2001 From: Mike Kruskal Date: Fri, 17 Nov 2023 15:17:59 -0800 Subject: [PATCH] Register a shutdown delete for C++ feature defaults Fixes #14794 PiperOrigin-RevId: 583499526 --- src/google/protobuf/descriptor.cc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 5be4ddf37af04..8fe803fba6f29 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; }