diff options
author | Thomas Haller <thaller@redhat.com> | 2021-06-17 22:01:34 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-06-23 12:13:39 +0200 |
commit | 21638c54b0ab811eddd22fcb565fc988e19fad4e (patch) | |
tree | 3363cf3813686335fcd9d0d467171439fede1dfb | |
parent | 8081e39ab680644b0e0a375247b9a95793d9aa94 (diff) |
libnm: simplify assertions for valid NMSettInfoProperty
-rw-r--r-- | src/libnm-core-impl/nm-setting.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c index ec4557cc60..ee65f0f0e0 100644 --- a/src/libnm-core-impl/nm-setting.c +++ b/src/libnm-core-impl/nm-setting.c @@ -178,33 +178,29 @@ _gprop_to_dbus_fcn_flags(const GValue *val) gboolean _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)); -#define _PROPERT_EXTRA(prop_info, member) \ - ({ \ - const NMSettInfoProperty *_prop_info = (prop_info); \ - \ - (_prop_info->property_type ? _prop_info->property_type->member : 0); \ - }) + if (prop_info->property_type) { + const NMSettInfoPropertType *property_type = prop_info->property_type; - nm_assert(!_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn) - || _PROPERT_EXTRA(prop_info, dbus_type)); - nm_assert(!_PROPERT_EXTRA(prop_info, from_dbus_fcn) || _PROPERT_EXTRA(prop_info, dbus_type)); - nm_assert(!_PROPERT_EXTRA(prop_info, to_dbus_fcn) || _PROPERT_EXTRA(prop_info, dbus_type)); + /* we always require a dbus_type. */ + nm_assert(property_type->dbus_type); - nm_assert(!_PROPERT_EXTRA(prop_info, to_dbus_fcn) - || !_PROPERT_EXTRA(prop_info, gprop_to_dbus_fcn)); - nm_assert(!_PROPERT_EXTRA(prop_info, from_dbus_fcn) - || !_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn)); - - nm_assert(!_PROPERT_EXTRA(prop_info, gprop_to_dbus_fcn) || prop_info->param_spec); - nm_assert(!_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn) || prop_info->param_spec); - -#undef _PROPERT_EXTRA + /* {to,from}_dbus_fcn and gprop_{to,from}_dbus_fcn cannot both be set. */ + nm_assert(!property_type->to_dbus_fcn || !property_type->gprop_to_dbus_fcn); + nm_assert(!property_type->from_dbus_fcn || !property_type->gprop_from_dbus_fcn); + if (!prop_info->param_spec) { + /* if we don't have a param_spec, we cannot have gprop_{to,from}_dbus_fcn. */ + nm_assert(!property_type->gprop_to_dbus_fcn); + nm_assert(!property_type->gprop_from_dbus_fcn); + } + } +#endif return TRUE; } |