浏览代码

Merge pull request #458 from xfxyjwf/memory_leak

Delete default UnknownFieldSet when shuting down.
Paul Yang 10 年之前
父节点
当前提交
eb162dad5f
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      src/google/protobuf/unknown_field_set.cc

+ 5 - 0
src/google/protobuf/unknown_field_set.cc

@@ -50,8 +50,13 @@ namespace {
 // instantiate the UnknownFieldSet dynamically only when required.
 // instantiate the UnknownFieldSet dynamically only when required.
 UnknownFieldSet* default_unknown_field_set_instance_ = NULL;
 UnknownFieldSet* default_unknown_field_set_instance_ = NULL;
 
 
+void DeleteDefaultUnknownFieldSet() {
+  delete default_unknown_field_set_instance_;
+}
+
 void InitDefaultUnknownFieldSet() {
 void InitDefaultUnknownFieldSet() {
   default_unknown_field_set_instance_ = new UnknownFieldSet();
   default_unknown_field_set_instance_ = new UnknownFieldSet();
+  internal::OnShutdown(&DeleteDefaultUnknownFieldSet);
 }
 }
 
 
 GOOGLE_PROTOBUF_DECLARE_ONCE(default_unknown_field_set_once_init_);
 GOOGLE_PROTOBUF_DECLARE_ONCE(default_unknown_field_set_once_init_);