From a078631265c5105d97a99c9f63872b2f293757b6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 22 Sep 2008 15:50:08 +0000 Subject: [PATCH] add patches --- gail-leaks.patch | 46 ++++++++++++++++++++++++++++++++++++++++++++++ gtk2.spec | 7 +++++-- info-leak.patch | 17 +++++++++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 gail-leaks.patch create mode 100644 info-leak.patch diff --git a/gail-leaks.patch b/gail-leaks.patch new file mode 100644 index 0000000..a368f76 --- /dev/null +++ b/gail-leaks.patch @@ -0,0 +1,46 @@ +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; + } diff --git a/gtk2.spec b/gtk2.spec index 05c213e..70f181b 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -16,7 +16,7 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk2 Version: %{base_version} -Release: 2%{?dist} +Release: 3%{?dist} License: LGPLv2+ Group: System Environment/Libraries Source: http://download.gnome.org/sources/gtk+/2.14/gtk+-%{version}.tar.bz2 @@ -30,7 +30,9 @@ Patch1: gtk+-2.11.1-set-invisible-char-to-bullet.patch # a workaround for some brokenness in the flash plugin # see http://bugzilla.gnome.org/show_bug.cgi?id=463773 Patch2: workaround.patch +# fixed upstream Patch3: info-leak.patch +# fixed upstream Patch4: gail-leaks.patch BuildRequires: atk-devel >= %{atk_version} @@ -303,8 +305,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/gtk-2.0 %changelog -* Mon Sep 22 2008 Matthias Clasen - 2.14.2-2 +* Mon Sep 22 2008 Matthias Clasen - 2.14.2-3 - BR libXdamage-devel (#462971, Owen Taylor) +- Plug some memory leaks * Thu Sep 18 2008 Matthias Clasen - 2.14.2-1 - Update to 2.14.2 diff --git a/info-leak.patch b/info-leak.patch new file mode 100644 index 0000000..b94106a --- /dev/null +++ b/info-leak.patch @@ -0,0 +1,17 @@ +diff -up gtk+-2.14.2/gdk-pixbuf/gdk-pixbuf-io.c.info-leak gtk+-2.14.2/gdk-pixbuf/gdk-pixbuf-io.c +--- gtk+-2.14.2/gdk-pixbuf/gdk-pixbuf-io.c.info-leak 2008-09-18 14:34:02.000000000 -0400 ++++ gtk+-2.14.2/gdk-pixbuf/gdk-pixbuf-io.c 2008-09-18 14:34:46.000000000 -0400 +@@ -688,9 +688,10 @@ gdk_pixbuf_load_module_unlocked (GdkPixb + if (fill_vtable) { + image_module->module = (void *) 1; + (* fill_vtable) (image_module); +- image_module->info = g_new0 (GdkPixbufFormat, 1); +- (* fill_info) (image_module->info); +- ++ if (image_module->info == NULL) { ++ image_module->info = g_new0 (GdkPixbufFormat, 1); ++ (* fill_info) (image_module->info); ++ } + return TRUE; + } + else