libnm: copy list of property-infos instead of keeping buffer from GArray
We use the "properties_override" GArray to construct the list of property infos. But as we append values to the GArray, the buffer grows exponentially and likely is larger than the actually used number of values. As this data is kept until the end of the program, let's not waste the over-allocated memory and instead copy it to a buffer of the right size.
This commit is contained in:
@@ -442,13 +442,15 @@ has_property_type:
|
|||||||
sett_info->setting_class = setting_class;
|
sett_info->setting_class = setting_class;
|
||||||
if (detail)
|
if (detail)
|
||||||
sett_info->detail = *detail;
|
sett_info->detail = *detail;
|
||||||
|
nm_assert (properties_override->len > 0);
|
||||||
sett_info->property_infos_len = properties_override->len;
|
sett_info->property_infos_len = properties_override->len;
|
||||||
sett_info->property_infos = (const NMSettInfoProperty *) g_array_free (properties_override,
|
sett_info->property_infos = nm_memdup (properties_override->data, sizeof (NMSettInfoProperty) * properties_override->len);
|
||||||
properties_override->len == 0);
|
|
||||||
|
|
||||||
sett_info->property_infos_sorted = _property_infos_sort (sett_info->property_infos,
|
sett_info->property_infos_sorted = _property_infos_sort (sett_info->property_infos,
|
||||||
sett_info->property_infos_len,
|
sett_info->property_infos_len,
|
||||||
setting_class);
|
setting_class);
|
||||||
|
|
||||||
|
g_array_free (properties_override, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
const NMSettInfoProperty *
|
const NMSettInfoProperty *
|
||||||
|
Reference in New Issue
Block a user