InitializeDefaultRepeatedFields() allocates memory but does not release it.

pull/43/head
Antoni Buszta 10 years ago
parent 0971bb0d57
commit e83ba13a6f
  1. 15
      src/google/protobuf/extension_set.cc
  2. 4
      src/google/protobuf/extension_set.h

@ -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…
Cancel
Save