diff --git a/.gitignore b/.gitignore index e76b547..812e179 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/gtk+-2.24.22.tar.bz2 +SOURCES/gtk+-2.24.28.tar.bz2 diff --git a/.gtk2.metadata b/.gtk2.metadata index 3e0009b..f50327c 100644 --- a/.gtk2.metadata +++ b/.gtk2.metadata @@ -1 +1 @@ -45eb47fe4ee728e6bb08266a2244582ce31370db SOURCES/gtk+-2.24.22.tar.bz2 +b29814dba2e23c81b83a09162c49a1b638b268d8 SOURCES/gtk+-2.24.28.tar.bz2 diff --git a/SOURCES/0001-Fix-a-wrong-function-call.patch b/SOURCES/0001-Fix-a-wrong-function-call.patch new file mode 100644 index 0000000..e3cbb0a --- /dev/null +++ b/SOURCES/0001-Fix-a-wrong-function-call.patch @@ -0,0 +1,27 @@ +From 7ee8b1fd9af52842e87c26465b9aa8921e62ec90 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Fri, 17 Jul 2015 21:20:10 -0400 +Subject: [PATCH 1/2] Fix a wrong function call + +cairo_region_destroy can't handle GdkRegions. We need to call +gdk_region_destroy. Found by coverity. +--- + gdk/gdkwindow.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c +index a0500ce..eb0a56d 100644 +--- a/gdk/gdkwindow.c ++++ b/gdk/gdkwindow.c +@@ -8785,7 +8785,7 @@ do_child_shapes (GdkWindow *window, + + gdk_window_shape_combine_region (window, region, 0, 0); + +- cairo_region_destroy (region); ++ gdk_region_destroy (region); + } + + /** +-- +2.4.5 + diff --git a/SOURCES/0001-Print-to-a-file-in-the-current-directory-by-default.patch b/SOURCES/0001-Print-to-a-file-in-the-current-directory-by-default.patch deleted file mode 100644 index 45e66ef..0000000 --- a/SOURCES/0001-Print-to-a-file-in-the-current-directory-by-default.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 60189143a4097c615f9cda0dbec2cd48b4eca77d Mon Sep 17 00:00:00 2001 -From: Mike Gorse -Date: Wed, 30 Oct 2013 15:42:09 -0500 -Subject: [PATCH] Print to a file in the current directory by default - -When printing to a file, the filename was not being propagated if a -directory was not specified. - -https://bugzilla.gnome.org/show_bug.cgi?id=711177 ---- - gtk/gtkprinteroptionwidget.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/gtk/gtkprinteroptionwidget.c b/gtk/gtkprinteroptionwidget.c -index 2f43edf..08c2aff 100644 ---- a/gtk/gtkprinteroptionwidget.c -+++ b/gtk/gtkprinteroptionwidget.c -@@ -521,7 +521,16 @@ filesave_changed_cb (GtkWidget *button, - if (g_uri_parse_scheme (file) != NULL) - uri = g_strdup (file); - else -- uri = g_build_path ("/", gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (priv->combo)), file, NULL); -+ { -+ gchar *chooser_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (priv->combo)); -+ if (chooser_uri) -+ { -+ uri = g_build_path ("/", chooser_uri, file, NULL); -+ g_free (chooser_uri); -+ } -+ else -+ uri = g_filename_to_uri (file, NULL, NULL); -+ } - } - - if (uri) --- -1.9.3 - diff --git a/SOURCES/0001-gdkwindow-Handle-references-in-update_windows-list-c.patch b/SOURCES/0001-gdkwindow-Handle-references-in-update_windows-list-c.patch deleted file mode 100644 index 07f7ec1..0000000 --- a/SOURCES/0001-gdkwindow-Handle-references-in-update_windows-list-c.patch +++ /dev/null @@ -1,85 +0,0 @@ -From c212cb8f32c02cf2fe691372b753d334f6e25d69 Mon Sep 17 00:00:00 2001 -From: Marek Kasik -Date: Mon, 16 Dec 2013 18:04:14 +0100 -Subject: [PATCH 1/2] gdkwindow: Handle references in "update_windows" list - correctly - -Since update_windows list is a static variable in GdkWindow.c which -contains pointers to windows which needs to be updated, it can happen -that it contains a pointer to a window even after quit from a gtk_main(). -If another gtk_main() is called in the same process it tries to process -windows in the list which leads to a crash. -Correct reference count handling of added windows prevents such applications -from crash. - -https://bugzilla.gnome.org/show_bug.cgi?id=711552 ---- - gdk/gdkwindow.c | 19 ++++++++++++------- - 1 file changed, 12 insertions(+), 7 deletions(-) - -diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c -index f5f0339..0f33fb0 100644 ---- a/gdk/gdkwindow.c -+++ b/gdk/gdkwindow.c -@@ -5267,7 +5267,7 @@ gdk_window_add_update_window (GdkWindow *window) - prev = tmp; - } - /* here, tmp got advanced past all lower stacked siblings */ -- tmp = g_slist_prepend (tmp, window); -+ tmp = g_slist_prepend (tmp, g_object_ref (window)); - if (prev) - prev->next = tmp; - else -@@ -5280,7 +5280,7 @@ gdk_window_add_update_window (GdkWindow *window) - */ - if (has_ancestor_in_list && gdk_window_is_ancestor (tmp->data, window)) - { -- tmp = g_slist_prepend (tmp, window); -+ tmp = g_slist_prepend (tmp, g_object_ref (window)); - - if (prev) - prev->next = tmp; -@@ -5294,7 +5294,7 @@ gdk_window_add_update_window (GdkWindow *window) - */ - if (! tmp->next && has_ancestor_in_list) - { -- tmp = g_slist_append (tmp, window); -+ tmp = g_slist_append (tmp, g_object_ref (window)); - return; - } - -@@ -5305,13 +5305,20 @@ gdk_window_add_update_window (GdkWindow *window) - * hierarchy than what is already in the list) or the list is - * empty, prepend - */ -- update_windows = g_slist_prepend (update_windows, window); -+ update_windows = g_slist_prepend (update_windows, g_object_ref (window)); - } - - static void - gdk_window_remove_update_window (GdkWindow *window) - { -- update_windows = g_slist_remove (update_windows, window); -+ GSList *link; -+ -+ link = g_slist_find (update_windows, window); -+ if (link != NULL) -+ { -+ update_windows = g_slist_delete_link (update_windows, link); -+ g_object_unref (window); -+ } - } - - static gboolean -@@ -5687,8 +5694,6 @@ gdk_window_process_all_updates (void) - - _gdk_windowing_before_process_all_updates (); - -- g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL); -- - while (tmp_list) - { - GdkWindowObject *private = (GdkWindowObject *)tmp_list->data; --- -1.8.4.2 - diff --git a/SOURCES/0002-gdkwindow-Don-t-add-the-same-window-to-update_window.patch b/SOURCES/0002-gdkwindow-Don-t-add-the-same-window-to-update_window.patch deleted file mode 100644 index ee08344..0000000 --- a/SOURCES/0002-gdkwindow-Don-t-add-the-same-window-to-update_window.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 090159cec92921182f8eeb59762ceba11c1581f4 Mon Sep 17 00:00:00 2001 -From: Marek Kasik -Date: Wed, 18 Dec 2013 18:28:39 +0100 -Subject: [PATCH 2/2] gdkwindow: Don't add the same window to "update_windows" - twice - -This prevents passing of such window to another GMainLoop. - -https://bugzilla.gnome.org/show_bug.cgi?id=711552 ---- - gdk/gdkwindow.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c -index 0f33fb0..153144a 100644 ---- a/gdk/gdkwindow.c -+++ b/gdk/gdkwindow.c -@@ -5242,6 +5242,15 @@ gdk_window_add_update_window (GdkWindow *window) - GSList *prev = NULL; - gboolean has_ancestor_in_list = FALSE; - -+ /* Check whether "window" is already in "update_windows" list. -+ * It could be added during execution of gtk_widget_destroy() when -+ * setting focus widget to NULL and redrawing old focus widget. -+ * See bug 711552. -+ */ -+ tmp = g_slist_find (update_windows, window); -+ if (tmp != NULL) -+ return; -+ - for (tmp = update_windows; tmp; tmp = tmp->next) - { - GdkWindowObject *parent = GDK_WINDOW_OBJECT (window)->parent; --- -1.8.4.2 - diff --git a/SPECS/gtk2.spec b/SPECS/gtk2.spec index 753d4b8..73ebae7 100644 --- a/SPECS/gtk2.spec +++ b/SPECS/gtk2.spec @@ -17,8 +17,8 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk2 -Version: 2.24.22 -Release: 5%{?dist}.1 +Version: 2.24.28 +Release: 8%{?dist} License: LGPLv2+ Group: System Environment/Libraries URL: http://www.gtk.org @@ -36,11 +36,8 @@ Patch2: icon-padding.patch Patch8: tooltip-positioning.patch # https://bugzilla.gnome.org/show_bug.cgi?id=611313 Patch15: window-dragging.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1054751 -Patch31: 0001-gdkwindow-Handle-references-in-update_windows-list-c.patch -Patch32: 0002-gdkwindow-Don-t-add-the-same-window-to-update_window.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1130207 -Patch33: 0001-Print-to-a-file-in-the-current-directory-by-default.patch +# coverity fix +Patch20: 0001-Fix-a-wrong-function-call.patch BuildRequires: atk-devel >= %{atk_version} BuildRequires: glib2-devel >= %{glib2_version} @@ -152,11 +149,11 @@ This package contains developer documentation for the GTK+ widget toolkit. %patch2 -p1 -b .icon-padding %patch8 -p1 -b .tooltip-positioning %patch15 -p1 -b .window-dragging -%patch31 -p1 -b .gdkwindow-Handle-references -%patch32 -p1 -b .gdkwindow-Don-t-add -%patch33 -p1 -b .print-to-file +%patch20 -p1 %build + +export CFLAGS='-fno-strict-aliasing %optflags' (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi; %configure $CONFIGFLAGS \ --enable-man \ @@ -341,10 +338,22 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache %doc tmpdocs/examples %changelog -* Mon Aug 18 2014 Marek Kasik - 2.24.22-5.el7_0.1 +* Fri Jul 17 2015 Matthias Clasen - 2.24.28-8 +- Fix a coverty spotted bug +Related: #1221171 + +* Thu May 14 2015 Matthias Clasen - 2.24.28-7 +- Build with -fno-strict-aliasing +Related: #1221171 + +* Thu May 14 2015 Matthias Clasen - 2.24.28-1 +- Update to 2.24.28 +Resolves: #1221171 + +* Thu Jul 31 2014 Marek Kasik - 2.24.22-6 - Propagate filename if directory was not specified - when printing to a file -- Resolves: #1130207 +- Resolves: #1109100 * Fri Jan 24 2014 Daniel Mach - 2.24.22-5 - Mass rebuild 2014-01-24