Release v2.5.90
[platform/core/uifw/at-spi2-atk.git] / atk-adaptor / adaptors / cache-adaptor.c
index 4f647a1..79a9e6a 100644 (file)
@@ -152,7 +152,6 @@ append_cache_item (AtkObject * obj, gpointer data)
         for (i = 0; i < childcount; i++)
           {
             AtkObject *child;
-            gchar *child_path;
 
             child = atk_object_ref_accessible_child (obj, i);
             spi_object_append_reference (&iter_sub_array, child);
@@ -234,9 +233,10 @@ append_accessible_hf (gpointer key, gpointer obj_data, gpointer data)
 }
 
 static void
-unref_accessible_hf (gpointer key, gpointer obj_data, gpointer data)
+add_to_list_hf (gpointer key, gpointer obj_data, gpointer data)
 {
-  g_object_unref (key);
+  GSList **listptr = data;
+  *listptr = g_slist_prepend (*listptr, key);
 }
 
 /*---------------------------------------------------------------------------*/
@@ -251,7 +251,6 @@ emit_cache_remove (SpiCache *cache, GObject * obj)
                                           "RemoveAccessible")))
     {
       DBusMessageIter iter;
-      gchar *path;
 
       dbus_message_iter_init_append (message, &iter);
 
@@ -302,6 +301,7 @@ impl_GetItems (DBusConnection * bus, DBusMessage * message, void *user_data)
 {
   DBusMessage *reply;
   DBusMessageIter iter, iter_array;
+  GSList *pending_unrefs = NULL;
 
   if (bus == spi_global_app_data->bus)
     spi_atk_add_client (dbus_message_get_sender (message));
@@ -313,7 +313,8 @@ impl_GetItems (DBusConnection * bus, DBusMessage * message, void *user_data)
                                     SPI_CACHE_ITEM_SIGNATURE, &iter_array);
   spi_cache_foreach (spi_global_cache, ref_accessible_hf, NULL);
   spi_cache_foreach (spi_global_cache, append_accessible_hf, &iter_array);
-  spi_cache_foreach (spi_global_cache, unref_accessible_hf, NULL);
+  spi_cache_foreach (spi_global_cache, add_to_list_hf, &pending_unrefs);
+  g_slist_free_full (pending_unrefs, g_object_unref);
   dbus_message_iter_close_container (&iter, &iter_array);
   return reply;
 }