diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index 3c82fd8de..0fac67009 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -5951,7 +5951,7 @@ register_with_closures_on_method_call (GDBusConnection *connection, g_value_set_variant (¶ms[5], parameters); g_value_init (¶ms[6], G_TYPE_DBUS_METHOD_INVOCATION); - g_value_take_object (¶ms[6], g_steal_pointer (&invocation)); + g_value_set_object (¶ms[6], invocation); g_closure_invoke (data->method_call_closure, NULL, G_N_ELEMENTS (params), params, NULL); diff --git a/gio/tests/gdbus-export.c b/gio/tests/gdbus-export.c index 5be560013..599df5bb5 100644 --- a/gio/tests/gdbus-export.c +++ b/gio/tests/gdbus-export.c @@ -161,23 +161,6 @@ foo_method_call (GDBusConnection *connection, } } -static void -foo_method_call_with_closure (GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer user_data) -{ - /* The call below takes ownership of the invocation but ownership is not - * passed into the callback so get an additional reference here */ - g_object_ref (invocation); - - foo_method_call (connection, sender, object_path, interface_name, method_name, parameters, invocation, user_data); -} - static GVariant * foo_get_property (GDBusConnection *connection, const gchar *sender, @@ -1457,7 +1440,7 @@ test_object_registration_with_closures (void) registration_id = g_dbus_connection_register_object_with_closures (c, "/foo/boss", (GDBusInterfaceInfo *) &foo_interface_info, - g_cclosure_new (G_CALLBACK (foo_method_call_with_closure), NULL, NULL), + g_cclosure_new (G_CALLBACK (foo_method_call), NULL, NULL), g_cclosure_new (G_CALLBACK (foo_get_property), NULL, NULL), g_cclosure_new (G_CALLBACK (foo_set_property), NULL, NULL), &error);