summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gdbus/watch.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gdbus/watch.c b/gdbus/watch.c
index 9e4f994a..ed3bc429 100644
--- a/gdbus/watch.c
+++ b/gdbus/watch.c
@@ -593,12 +593,16 @@ static gboolean update_service(void *user_data)
{
struct service_data *data = user_data;
struct filter_callback *cb = data->callback;
+ DBusConnection *conn;
update_name_cache(data->name, data->owner);
+ conn = dbus_connection_ref(data->conn);
+ service_data_free(data);
+
if (cb->conn_func)
- cb->conn_func(data->conn, cb->user_data);
+ cb->conn_func(conn, cb->user_data);
- service_data_free(data);
+ dbus_connection_unref(conn);
return FALSE;
}