Fix memory leaks in GncQueryView

This commit is contained in:
Geert Janssens
2018-09-14 11:51:25 +02:00
parent 62eb95c05c
commit 5609b704c5

View File

@@ -219,6 +219,8 @@ gnc_query_view_init (GNCQueryView *qview)
gnc_widget_set_style_context (GTK_WIDGET(qview), "GncQueryView");
qview->query = NULL;
qview->selected_entry = NULL;
qview->selected_entry_list = NULL;
qview->num_columns = 0;
qview->column_params = NULL;
@@ -478,8 +480,9 @@ gnc_query_view_select_row_cb (GtkTreeSelection *selection, gpointer user_data)
GList *node;
GList *list_of_rows;
qview->selected_entry_list = NULL;
qview->selected_entry = NULL;
g_list_free (qview->selected_entry_list);
qview->selected_entry_list = NULL;
model = gtk_tree_view_get_model (GTK_TREE_VIEW (qview));
list_of_rows = gtk_tree_selection_get_selected_rows (selection, &model);
@@ -529,6 +532,7 @@ gnc_query_view_double_click_cb (GtkTreeView *view,
gtk_tree_model_get (model, &iter, 0, &entry, -1);
qview->selected_entry = entry;
g_list_free (qview->selected_entry_list);
qview->selected_entry_list = NULL;
g_signal_emit (qview, query_view_signals[DOUBLE_CLICK_ENTRY], 0, entry);
@@ -648,7 +652,7 @@ gnc_query_view_refresh_selected (GNCQueryView *qview, GList *old_entry)
model = gtk_tree_view_get_model (GTK_TREE_VIEW (qview));
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (qview));
if(g_list_length (old_entry) > 0)
if(old_entry && g_list_length (old_entry) > 0)
{
/* Walk the list of old entries */
for(node = old_entry; node; node = node->next)
@@ -684,25 +688,23 @@ gnc_query_view_refresh_selected (GNCQueryView *qview, GList *old_entry)
void
gnc_query_view_refresh (GNCQueryView *qview)
{
GtkTreeModel *model;
GList *old_entry;
GtkTreeModel *model;
g_return_if_fail (qview != NULL);
g_return_if_fail (GNC_IS_QUERY_VIEW (qview));
old_entry = qview->selected_entry_list;
model = gtk_tree_view_get_model (GTK_TREE_VIEW (qview));
gtk_list_store_clear (GTK_LIST_STORE (model));
qview->num_entries = 0;
qview->selected_entry = NULL;
qview->selected_entry_list = NULL;
gnc_query_view_fill (qview);
gnc_query_view_refresh_selected (qview, old_entry);
gnc_query_view_refresh_selected (qview, qview->selected_entry_list);
g_list_free(old_entry);
g_list_free(qview->selected_entry_list);
qview->selected_entry_list = NULL;
}
@@ -875,6 +877,7 @@ gnc_query_view_unselect_all (GNCQueryView *qview)
gtk_tree_selection_unselect_all (selection);
qview->selected_entry = NULL;
g_list_free (qview->selected_entry_list);
qview->selected_entry_list = NULL;
}