Date: Tuesday, February 16, 2016 @ 10:19:10 Author: foutrelis Revision: 259562
upgpkg: gtk3 3.18.7-2 Fix two crashes in the file chooser dialog (FS#48158). Added: gtk3/trunk/0001-file-chooser-Avoid-a-crash.patch gtk3/trunk/0001-file-chooser-Use-the-right-model-when-getting-the-se.patch Modified: gtk3/trunk/PKGBUILD -----------------------------------------------------------------+ 0001-file-chooser-Avoid-a-crash.patch | 46 ++++++++++ 0001-file-chooser-Use-the-right-model-when-getting-the-se.patch | 42 +++++++++ PKGBUILD | 12 ++ 3 files changed, 99 insertions(+), 1 deletion(-) Added: 0001-file-chooser-Avoid-a-crash.patch =================================================================== --- 0001-file-chooser-Avoid-a-crash.patch (rev 0) +++ 0001-file-chooser-Avoid-a-crash.patch 2016-02-16 09:19:10 UTC (rev 259562) @@ -0,0 +1,46 @@ +From f793da54a992d87da42c1f98e3cd5e9556c670ab Mon Sep 17 00:00:00 2001 +From: Matthias Clasen <[email protected]> +Date: Sat, 30 Jan 2016 23:07:56 -0500 +Subject: [PATCH] file chooser: Avoid a crash + +Since 39c2d12330b6d4405ca8a5599c12017c58626fcf, +priv->operation_mode == OPERATION_MODE_BROWSE no longer +guarantees that priv->browse_files_model is the current +model of the list - we are only switching the models after +loading the new directory. Avoid triggering the assertion +in show_and_select_files by checking if we have right model +before calling it. + +https://bugzilla.gnome.org/show_bug.cgi?id=761209 +--- + gtk/gtkfilechooserwidget.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c +index 127e18b..d1a2ed8 100644 +--- a/gtk/gtkfilechooserwidget.c ++++ b/gtk/gtkfilechooserwidget.c +@@ -5630,15 +5630,19 @@ gtk_file_chooser_widget_select_file (GtkFileChooser *chooser, + GtkFileChooserWidgetPrivate *priv = impl->priv; + GFile *parent_file; + gboolean same_path; ++ GtkFileSystemModel *fsmodel; + + parent_file = g_file_get_parent (file); + + if (!parent_file) + return gtk_file_chooser_set_current_folder_file (chooser, file, error); + ++ fsmodel = GTK_FILE_SYSTEM_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->browse_files_tree_view))); ++ + if (priv->operation_mode == OPERATION_MODE_SEARCH || + priv->operation_mode == OPERATION_MODE_RECENT || +- priv->load_state == LOAD_EMPTY) ++ priv->load_state == LOAD_EMPTY || ++ priv->browse_files_model != fsmodel) + { + same_path = FALSE; + } +-- +2.7.1 + Added: 0001-file-chooser-Use-the-right-model-when-getting-the-se.patch =================================================================== --- 0001-file-chooser-Use-the-right-model-when-getting-the-se.patch (rev 0) +++ 0001-file-chooser-Use-the-right-model-when-getting-the-se.patch 2016-02-16 09:19:10 UTC (rev 259562) @@ -0,0 +1,42 @@ +From 811a9b21c1bb226236d2a880f9cbbcbcf6028c2e Mon Sep 17 00:00:00 2001 +From: Matthias Clasen <[email protected]> +Date: Fri, 12 Feb 2016 20:35:26 -0500 +Subject: [PATCH] file chooser: Use the right model when getting the selection + +We don't need to make assumptions about which model is currently +used since gtk_tree_selection_get_selection hands us the model. + +https://bugzilla.gnome.org/show_bug.cgi?id=761757 +--- + gtk/gtkfilechooserwidget.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c +index c77a8b7..6ef25b6 100644 +--- a/gtk/gtkfilechooserwidget.c ++++ b/gtk/gtkfilechooserwidget.c +@@ -6266,10 +6266,11 @@ get_selected_file_info_from_file_list (GtkFileChooserWidget *impl, + GtkTreeSelection *selection; + GtkTreeIter iter; + GFileInfo *info; ++ GtkTreeModel *model; + + g_assert (!priv->select_multiple); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->browse_files_tree_view)); +- if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) ++ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) + { + *had_selection = FALSE; + return NULL; +@@ -6277,7 +6278,7 @@ get_selected_file_info_from_file_list (GtkFileChooserWidget *impl, + + *had_selection = TRUE; + +- info = _gtk_file_system_model_get_info (priv->browse_files_model, &iter); ++ info = _gtk_file_system_model_get_info (GTK_FILE_SYSTEM_MODEL (model), &iter); + return info; + } + +-- +2.7.1 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-02-16 09:18:43 UTC (rev 259561) +++ PKGBUILD 2016-02-16 09:19:10 UTC (rev 259562) @@ -5,7 +5,7 @@ pkgbase=gtk3 pkgname=(gtk3 gtk-update-icon-cache) pkgver=3.18.7 -pkgrel=1 +pkgrel=2 pkgdesc="GObject-based multi-platform GUI toolkit" arch=(i686 x86_64) url="http://www.gtk.org/" @@ -15,13 +15,23 @@ makedepends=(gobject-introspection libcanberra gtk-doc) license=(LGPL) source=(https://download.gnome.org/sources/gtk+/${pkgver:0:4}/gtk+-$pkgver.tar.xz + 0001-file-chooser-Avoid-a-crash.patch + 0001-file-chooser-Use-the-right-model-when-getting-the-se.patch settings.ini) sha256sums=('a76e1cb0ac45ce5c2734f6778f2731a5c6a23d1ff6bd4db357774f014ee68820' + '36058e522839bcae775cbafef8d4ad21cba98265b5cf9e90d5b46b874ddbf79f' + '22c0272fdbb048ec8fe62d71bcb1ab6765050de3eb04e833ba7303750782d0a7' '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202') prepare() { cd gtk+-$pkgver NOCONFIGURE=1 ./autogen.sh + + # https://bugzilla.gnome.org/show_bug.cgi?id=761209 + patch -Np1 -i ../0001-file-chooser-Avoid-a-crash.patch + + # https://bugzilla.gnome.org/show_bug.cgi?id=761757 + patch -Np1 -i ../0001-file-chooser-Use-the-right-model-when-getting-the-se.patch } build() {
