InitializeDefaultRepeatedFields() allocates memory but does not release it.
This commit is contained in:
parent
0971bb0d57
commit
e83ba13a6f
2 changed files with 19 additions and 0 deletions
|
@ -1622,6 +1622,9 @@ struct StaticDefaultRepeatedFieldsInitializer {
|
|||
StaticDefaultRepeatedFieldsInitializer() {
|
||||
InitializeDefaultRepeatedFields();
|
||||
}
|
||||
~StaticDefaultRepeatedFieldsInitializer() {
|
||||
DestroyDefaultRepeatedFields();
|
||||
}
|
||||
} static_repeated_fields_initializer;
|
||||
|
||||
void InitializeDefaultRepeatedFields() {
|
||||
|
@ -1645,6 +1648,18 @@ void InitializeDefaultRepeatedFields() {
|
|||
new RepeatedField<bool>;
|
||||
}
|
||||
|
||||
void DestroyDefaultRepeatedFields() {
|
||||
delete RepeatedStringTypeTraits::default_repeated_field_;
|
||||
delete RepeatedMessageGenericTypeTraits::default_repeated_field_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_int32_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_int64_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_uint32_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_uint64_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_double_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_float_;
|
||||
delete RepeatedPrimitiveGenericTypeTraits::default_repeated_field_bool_;
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace protobuf
|
||||
} // namespace google
|
||||
|
|
|
@ -704,11 +704,13 @@ class RepeatedPrimitiveTypeTraits {
|
|||
|
||||
// Declared here so that this can be friended below.
|
||||
void InitializeDefaultRepeatedFields();
|
||||
void DestroyDefaultRepeatedFields();
|
||||
|
||||
class LIBPROTOBUF_EXPORT RepeatedPrimitiveGenericTypeTraits {
|
||||
private:
|
||||
template<typename Type> friend class RepeatedPrimitiveTypeTraits;
|
||||
friend void InitializeDefaultRepeatedFields();
|
||||
friend void DestroyDefaultRepeatedFields();
|
||||
static const RepeatedField<int32>* default_repeated_field_int32_;
|
||||
static const RepeatedField<int64>* default_repeated_field_int64_;
|
||||
static const RepeatedField<uint32>* default_repeated_field_uint32_;
|
||||
|
@ -844,6 +846,7 @@ class LIBPROTOBUF_EXPORT RepeatedStringTypeTraits {
|
|||
|
||||
private:
|
||||
friend void InitializeDefaultRepeatedFields();
|
||||
friend void DestroyDefaultRepeatedFields();
|
||||
static const RepeatedFieldType *default_repeated_field_;
|
||||
};
|
||||
|
||||
|
@ -1010,6 +1013,7 @@ class LIBPROTOBUF_EXPORT RepeatedMessageGenericTypeTraits {
|
|||
private:
|
||||
template<typename Type> friend class RepeatedMessageTypeTraits;
|
||||
friend void InitializeDefaultRepeatedFields();
|
||||
friend void DestroyDefaultRepeatedFields();
|
||||
static const RepeatedFieldType* default_repeated_field_;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue