libnm: fix compare_property() to handle default values

Before, get_property_for_dbus() would @ignore_defaults.
That is for example wrong for properties of type G_TYPE_STRV.

In this case, if one operand has the property at its default
(NULL) and the other has it to an empty string list, both would
compare equal.

This has the effect that different settings might compare equal.

(cherry picked from commit 7478c4b54a)
This commit is contained in:
Thomas Haller 2015-05-20 17:53:25 +02:00
parent 217c012595
commit 6861cd1f2b

View file

@ -1053,13 +1053,15 @@ compare_property (NMSetting *setting,
property = nm_setting_class_find_property (NM_SETTING_GET_CLASS (setting), prop_spec->name);
g_return_val_if_fail (property != NULL, FALSE);
value1 = get_property_for_dbus (setting, property, FALSE);
value2 = get_property_for_dbus (other, property, FALSE);
value1 = get_property_for_dbus (setting, property, TRUE);
value2 = get_property_for_dbus (other, property, TRUE);
cmp = nm_property_compare (value1, value2);
g_variant_unref (value1);
g_variant_unref (value2);
if (value1)
g_variant_unref (value1);
if (value2)
g_variant_unref (value2);
return cmp == 0;
}