hotplug-sniffer: fix double free when setting D-Bus return value
g_dbus_method_invocation_return_value() adopts a floating reference, so we don't also need to unreference it; fix by replacing the code using a more compact form using the ^ convenience character in GVariant type specifications. (Thanks to Ryan Lortie for the suggestion.) https://bugzilla.gnome.org/show_bug.cgi?id=667378
This commit is contained in:
parent
0cfedcaad6
commit
fa515328eb
@ -114,10 +114,7 @@ sniff_async_ready_cb (GObject *source,
|
|||||||
{
|
{
|
||||||
InvocationData *data = user_data;
|
InvocationData *data = user_data;
|
||||||
gchar **types;
|
gchar **types;
|
||||||
gint idx;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GVariantBuilder *builder;
|
|
||||||
GVariant *result;
|
|
||||||
|
|
||||||
types = shell_mime_sniffer_sniff_finish (SHELL_MIME_SNIFFER (source),
|
types = shell_mime_sniffer_sniff_finish (SHELL_MIME_SNIFFER (source),
|
||||||
res, &error);
|
res, &error);
|
||||||
@ -129,16 +126,8 @@ sniff_async_ready_cb (GObject *source,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
|
g_dbus_method_invocation_return_value (data->invocation,
|
||||||
|
g_variant_new ("(^as)", types));
|
||||||
for (idx = 0; types[idx] != NULL; idx++)
|
|
||||||
g_variant_builder_add (builder, "s", types[idx]);
|
|
||||||
|
|
||||||
result = g_variant_new ("(as)", builder);
|
|
||||||
g_dbus_method_invocation_return_value (data->invocation, result);
|
|
||||||
|
|
||||||
g_variant_unref (result);
|
|
||||||
g_variant_builder_unref (builder);
|
|
||||||
g_strfreev (types);
|
g_strfreev (types);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
Loading…
Reference in New Issue
Block a user