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:
Thomas Haller
2019-09-22 16:21:00 +02:00
parent a1b575b07b
commit 133f23d39e

View File

@@ -442,13 +442,15 @@ has_property_type:
sett_info->setting_class = setting_class;
if (detail)
sett_info->detail = *detail;
nm_assert (properties_override->len > 0);
sett_info->property_infos_len = properties_override->len;
sett_info->property_infos = (const NMSettInfoProperty *) g_array_free (properties_override,
properties_override->len == 0);
sett_info->property_infos = nm_memdup (properties_override->data, sizeof (NMSettInfoProperty) * properties_override->len);
sett_info->property_infos_sorted = _property_infos_sort (sett_info->property_infos,
sett_info->property_infos_len,
setting_class);
g_array_free (properties_override, TRUE);
}
const NMSettInfoProperty *