keyboard: Fix a memory leak

While the actual strings returned by g_variant_get_strv() are owned
by the variant, we still need to free the container ...

https://bugzilla.gnome.org/show_bug.cgi?id=784356
This commit is contained in:
Florian Müllner 2017-06-29 16:42:43 +02:00 committed by Georges Basile Stavracas Neto
parent a2e8e1941a
commit 870fb46201

View file

@ -87,12 +87,18 @@ free_key_array (GPtrArray *keys)
static const gchar* static const gchar*
get_binding_from_variant (GVariant *variant) get_binding_from_variant (GVariant *variant)
{ {
const char *str, **strv;
if (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING)) if (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING))
return g_variant_get_string (variant, NULL); return g_variant_get_string (variant, NULL);
else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING_ARRAY)) else if (!g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING_ARRAY))
return g_variant_get_strv (variant, NULL)[0]; return NULL;
return NULL; strv = g_variant_get_strv (variant, NULL);
str = strv[0];
g_free (strv);
return str;
} }
static gboolean static gboolean