Blob Blame History Raw
diff -up gtk+-2.14.2/modules/other/gail/gailcell.c.gail-leaks gtk+-2.14.2/modules/other/gail/gailcell.c
--- gtk+-2.14.2/modules/other/gail/gailcell.c.gail-leaks	2008-09-19 00:55:50.000000000 -0400
+++ gtk+-2.14.2/modules/other/gail/gailcell.c	2008-09-19 00:56:24.000000000 -0400
@@ -118,6 +118,7 @@ gail_cell_destroyed (GtkWidget       *wi
    * GtkWidget. We set the  pointer location to NULL;
    */
   cell->widget = NULL;
+  g_signal_handlers_disconnect_by_func (widget, gail_cell_destroyed, cell);
 }
 
 static void
diff -up gtk+-2.14.2/modules/other/gail/gailtreeview.c.gail-leaks gtk+-2.14.2/modules/other/gail/gailtreeview.c
--- gtk+-2.14.2/modules/other/gail/gailtreeview.c.gail-leaks	2008-09-19 00:55:02.000000000 -0400
+++ gtk+-2.14.2/modules/other/gail/gailtreeview.c	2008-09-19 00:55:39.000000000 -0400
@@ -3667,12 +3667,12 @@ static gboolean
 garbage_collect_cell_data (gpointer data)
 {
       GailTreeView *tree_view;
-      GList *temp_list;
+      GList *temp_list, *list;
       GailTreeViewCellInfo *cell_info;
 
       g_assert (GAIL_IS_TREE_VIEW (data));
       tree_view = (GailTreeView *)data;
-      temp_list = g_list_copy (tree_view->cell_data);
+      list = g_list_copy (tree_view->cell_data);
 
       tree_view->garbage_collection_pending = FALSE;
       if (tree_view->idle_garbage_collect_id != 0) 
@@ -3682,6 +3682,7 @@ garbage_collect_cell_data (gpointer data
       }
 
       /* Must loop through them all */
+      temp_list = list;
       while (temp_list != NULL)
       {
           cell_info = temp_list->data;
@@ -3696,7 +3697,7 @@ garbage_collect_cell_data (gpointer data
 	  }
           temp_list = temp_list->next;
       }
-      g_list_free (temp_list);
+      g_list_free (list);
 
       return tree_view->garbage_collection_pending;
 }