commit caa451cc1ce483333091f7ffab6be901e7a9f2b8
parent 50fe0ebcf6e8f3de1f2e8c8a2eaef90d63cf79b0
Author: Andrej Kacian <ticho@claws-mail.org>
Date: Sat, 3 Mar 2018 10:27:56 +0100
Fix potential crashes in gtkut_tree_view_get_selected_pointer().
Diffstat:
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c
@@ -2016,15 +2016,23 @@ gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
cm_return_val_if_fail(view != NULL, NULL);
cm_return_val_if_fail(column >= 0, NULL);
- sel = gtk_tree_view_get_selection(view);
+ model = gtk_tree_view_get_model(view);
+ if (_model != NULL)
+ *_model = model;
- cm_return_val_if_fail(
- gtk_tree_selection_count_selected_rows(sel) == 1,
- NULL);
+ sel = gtk_tree_view_get_selection(view);
+ if (_selection != NULL)
+ *_selection = sel;
- if (!gtk_tree_selection_get_selected(sel, &model, &iter))
+ if (!gtk_tree_selection_get_selected(sel, NULL, &iter))
return NULL; /* No row selected */
+ if (_iter != NULL)
+ *_iter = iter;
+
+ if (gtk_tree_selection_count_selected_rows(sel) > 1)
+ return NULL; /* Can't work with multiselect */
+
cm_return_val_if_fail(
gtk_tree_model_get_n_columns(model) > column,
NULL);
@@ -2036,12 +2044,5 @@ gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
gtk_tree_model_get(model, &iter, column, &ptr, -1);
- if (_model != NULL)
- *_model = model;
- if (_selection != NULL)
- *_selection = sel;
- if (_iter != NULL)
- *_iter = iter;
-
return ptr;
}