Diff between 194360a4dedec7c86690743f646d19b0b167b572 and 759819db1f0406e51a0338c9cb8038827614097d

Changed Files

File Additions Deletions Status
gdbus/watch.c +6 -2 modified

Full Patch

diff --git a/gdbus/watch.c b/gdbus/watch.c
index 9e4f994..ed3bc42 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;
 }