diff options
| author | Michael Biebl <biebl@debian.org> | 2019-11-06 20:46:28 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2019-11-06 20:46:28 +0100 |
| commit | 515e1311d22086215e182f18a4529f24660ca4c3 (patch) | |
| tree | 5b1d21eeceaa57d233d46ddfeeca5e0c1fc8b8a3 /libnm/nm-object.c | |
| parent | 790e3946f0274a272fdda4d8697ce31a757a48d2 (diff) | |
| parent | 9c642eac191ef0dce49855d8da0a9e9af18d5113 (diff) | |
Update upstream source from tag 'upstream/1.20.6'
Update to upstream version '1.20.6' with Debian dir 93035bdc0e2b22e7410d6c70c55a21648f836a2f
Diffstat (limited to 'libnm/nm-object.c')
| -rw-r--r-- | libnm/nm-object.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libnm/nm-object.c b/libnm/nm-object.c index 0888077b..55c3af4f 100644 --- a/libnm/nm-object.c +++ b/libnm/nm-object.c @@ -772,14 +772,24 @@ properties_changed (GDBusProxy *proxy, } } -#define HANDLE_TYPE(vtype, ctype, getter) \ - G_STMT_START { \ +#define HANDLE_TYPE_CHECK(vtype, ctype, getter) \ + ({ \ + gboolean _success = FALSE; \ + \ if (g_variant_is_of_type (value, vtype)) { \ ctype *param = (ctype *) field; \ ctype newval = getter (value); \ different = *param != newval; \ *param = newval; \ - } else { \ + _success = TRUE; \ + } \ + \ + _success; \ + }) + +#define HANDLE_TYPE(vtype, ctype, getter) \ + G_STMT_START { \ + if (!HANDLE_TYPE_CHECK (vtype, ctype, getter)) {\ success = FALSE; \ goto done; \ } \ @@ -891,9 +901,11 @@ demarshal_generic (NMObject *object, NM_PRAGMA_WARNING_REENABLE } else if (pspec->value_type == G_TYPE_INT) HANDLE_TYPE (G_VARIANT_TYPE_INT32, int, g_variant_get_int32); - else if (pspec->value_type == G_TYPE_UINT) - HANDLE_TYPE (G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32); - else if (pspec->value_type == G_TYPE_INT64) + else if (pspec->value_type == G_TYPE_UINT) { + if ( !HANDLE_TYPE_CHECK (G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32) + && !HANDLE_TYPE_CHECK (G_VARIANT_TYPE_UINT16, guint, g_variant_get_uint16)) + success = FALSE; + } else if (pspec->value_type == G_TYPE_INT64) HANDLE_TYPE (G_VARIANT_TYPE_INT64, gint64, g_variant_get_int64); else if (pspec->value_type == G_TYPE_UINT64) HANDLE_TYPE (G_VARIANT_TYPE_UINT64, guint64, g_variant_get_uint64); |