aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/unknown_field_set.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/google/protobuf/unknown_field_set.cc')
-rw-r--r--src/google/protobuf/unknown_field_set.cc23
1 files changed, 2 insertions, 21 deletions
diff --git a/src/google/protobuf/unknown_field_set.cc b/src/google/protobuf/unknown_field_set.cc
index 0ada85e5..35f24e7a 100644
--- a/src/google/protobuf/unknown_field_set.cc
+++ b/src/google/protobuf/unknown_field_set.cc
@@ -46,28 +46,9 @@
namespace google {
namespace protobuf {
-namespace {
-// This global instance is returned by unknown_fields() on any message class
-// when the object has no unknown fields. This is necessary because we now
-// instantiate the UnknownFieldSet dynamically only when required.
-UnknownFieldSet* default_unknown_field_set_instance_ = NULL;
-
-void DeleteDefaultUnknownFieldSet() {
- delete default_unknown_field_set_instance_;
-}
-
-void InitDefaultUnknownFieldSet() {
- default_unknown_field_set_instance_ = new UnknownFieldSet();
- internal::OnShutdown(&DeleteDefaultUnknownFieldSet);
-}
-
-GOOGLE_PROTOBUF_DECLARE_ONCE(default_unknown_field_set_once_init_);
-}
-
const UnknownFieldSet* UnknownFieldSet::default_instance() {
- ::google::protobuf::GoogleOnceInit(&default_unknown_field_set_once_init_,
- &InitDefaultUnknownFieldSet);
- return default_unknown_field_set_instance_;
+ static auto instance = internal::OnShutdownDelete(new UnknownFieldSet());
+ return instance;
}
void UnknownFieldSet::ClearFallback() {