mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-05 15:50:36 +01:00
libnm: initialize "name" in _nm_properties_override_gobj()
Previously, _nm_setting_class_commit() required that the "name" of a NMSettInfoProperty is unset, when the property also has a "param_spec". _nm_setting_class_commit() would then as first iterate over all properties, and set the name. In practice, all callers only initialize NMSettInfoProperty via _nm_properties_override_gobj(). Now, let _nm_properties_override_gobj() set the "name" right away. Now _nm_setting_class_commit() will instead assert that the name is always set, and that the caller takes care of that. That means, we have less to do in _nm_setting_class_commit() (assertions aside).
This commit is contained in:
parent
43febd92ff
commit
eb3b2d9ef6
2 changed files with 22 additions and 24 deletions
|
|
@ -483,15 +483,23 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
|
|||
g_array_append_vals(properties_override, prop_info, 1);
|
||||
}
|
||||
|
||||
#define _nm_properties_override_gobj(properties_override, \
|
||||
p_param_spec, \
|
||||
p_property_type, \
|
||||
... /* extra NMSettInfoProperty fields */) \
|
||||
_nm_properties_override((properties_override), \
|
||||
NM_SETT_INFO_PROPERTY(.name = NULL, \
|
||||
.param_spec = (p_param_spec), \
|
||||
.property_type = (p_property_type), \
|
||||
__VA_ARGS__))
|
||||
#define _nm_properties_override_gobj(properties_override, \
|
||||
p_param_spec, \
|
||||
p_property_type, \
|
||||
... /* extra NMSettInfoProperty fields */) \
|
||||
G_STMT_START \
|
||||
{ \
|
||||
GParamSpec *const _p_param_spec_2 = (p_param_spec); \
|
||||
\
|
||||
nm_assert(_p_param_spec_2); \
|
||||
\
|
||||
_nm_properties_override((properties_override), \
|
||||
NM_SETT_INFO_PROPERTY(.name = _p_param_spec_2->name, \
|
||||
.param_spec = _p_param_spec_2, \
|
||||
.property_type = (p_property_type), \
|
||||
__VA_ARGS__)); \
|
||||
} \
|
||||
G_STMT_END
|
||||
|
||||
#define _nm_properties_override_dbus(properties_override, \
|
||||
p_name, \
|
||||
|
|
|
|||
|
|
@ -183,9 +183,8 @@ _nm_properties_override_assert(const NMSettInfoProperty *prop_info)
|
|||
{
|
||||
#if NM_MORE_ASSERTS
|
||||
nm_assert(prop_info);
|
||||
nm_assert((!!prop_info->name) != (!!prop_info->param_spec));
|
||||
nm_assert(!prop_info->param_spec || !prop_info->name
|
||||
|| nm_streq0(prop_info->name, prop_info->param_spec->name));
|
||||
nm_assert(prop_info->name);
|
||||
nm_assert(!prop_info->param_spec || prop_info->name == prop_info->param_spec->name);
|
||||
|
||||
if (prop_info->property_type) {
|
||||
const NMSettInfoPropertType *property_type = prop_info->property_type;
|
||||
|
|
@ -361,18 +360,6 @@ _nm_setting_class_commit(NMSettingClass *setting_class,
|
|||
|
||||
nm_assert(override_len > 0);
|
||||
|
||||
for (i = 0; i < override_len; i++) {
|
||||
NMSettInfoProperty *p = &nm_g_array_index(properties_override, NMSettInfoProperty, i);
|
||||
|
||||
nm_assert((!!p->name) != (!!p->param_spec));
|
||||
|
||||
if (!p->name) {
|
||||
nm_assert(p->param_spec);
|
||||
p->name = p->param_spec->name;
|
||||
} else
|
||||
nm_assert(!p->param_spec);
|
||||
}
|
||||
|
||||
#if NM_MORE_ASSERTS > 10
|
||||
property_specs =
|
||||
g_object_class_list_properties(G_OBJECT_CLASS(setting_class), &n_property_specs);
|
||||
|
|
@ -383,6 +370,9 @@ _nm_setting_class_commit(NMSettingClass *setting_class,
|
|||
gboolean found = FALSE;
|
||||
guint k;
|
||||
|
||||
nm_assert(p->name);
|
||||
nm_assert(!p->param_spec || p->name == p->param_spec->name);
|
||||
|
||||
nm_assert(!_nm_sett_info_property_find_in_array(
|
||||
nm_g_array_first_p(properties_override, NMSettInfoProperty),
|
||||
i,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue