X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=blobdiff_plain;f=atk-adaptor%2Fbridge.c;h=08e72fc269ff37ac2a1990b2ed0c31ab9628fccf;hp=3d10e9ba2a4f6c6ec465bfbbd4f7fafc5cf0af67;hb=247aaaa35739a8ab5e342be6ce4de11d26142b6f;hpb=631f89c9561d319f5f7b488ddbd8cbb1d1f4d684 diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c index 3d10e9b..08e72fc 100644 --- a/atk-adaptor/bridge.c +++ b/atk-adaptor/bridge.c @@ -975,14 +975,18 @@ gnome_accessibility_module_shutdown (void) for (l = spi_global_app_data->direct_connections; l; l = l->next) { - droute_context_unregister (spi_global_app_data->droute, l->data); - droute_unintercept_dbus (l->data); - dbus_connection_unref (l->data); + DBusConnection *connection; + + connection = l->data; + + droute_context_unregister (spi_global_app_data->droute, connection); + droute_unintercept_dbus (connection); + dbus_connection_unref (connection); } g_list_free (spi_global_app_data->direct_connections); for (ls = clients; ls; ls = ls->next) - g_free (l->data); + g_free (l->data); g_slist_free (clients); clients = NULL; @@ -1031,19 +1035,25 @@ void spi_atk_remove_client (const char *bus_name) { GSList *l; + GSList *next_node; - for (l = clients; l; l = l->next) + l = clients; + while (l) { + next_node = l->next; + if (!g_strcmp0 (l->data, bus_name)) { gchar *match = g_strdup_printf (name_match_tmpl, l->data); dbus_bus_remove_match (spi_global_app_data->bus, match, NULL); g_free (match); g_free (l->data); - clients = g_slist_remove_link (clients, l); + clients = g_slist_delete_link (clients, l); if (!clients) spi_atk_deregister_event_listeners (); } + + l = next_node; } }