talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

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:
Msrc/gtk/gtkutils.c | 25+++++++++++++------------
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; }