aboutsummaryrefslogtreecommitdiffstats
path: root/divelist.c
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-02-09 21:29:58 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-02-09 11:40:03 -0800
commit363c38f5578e6ab08ac4e80bb585ddd12f91c263 (patch)
tree703ae570ecacea4a8b829de147f32b2e6a1e15d7 /divelist.c
parent3848cac30f3b7cd96d8add37fc3576f2ff00093e (diff)
downloadsubsurface-363c38f5578e6ab08ac4e80bb585ddd12f91c263.tar.gz
Fixed some memory leaks in divelist.c related to gtk_tree_iter_copy()
divelist.c: get_iter_from_idx() goes trought the tree model and calls iter_has_index(), until a match is found. when the match is found we use gtk_tree_iter_copy() to make a copy of the iterator. This means that the caller of get_iter_from_idx() has to take care the de-allocation using gtk_tree_iter_free(). Also take care of the eventual: parent = gtk_tree_iter_copy(...) allocation in select_prev_dive(), select_next_dive() Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'divelist.c')
-rw-r--r--divelist.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/divelist.c b/divelist.c
index 03e0287d3..0b5e6245d 100644
--- a/divelist.c
+++ b/divelist.c
@@ -2953,11 +2953,12 @@ void show_and_select_dive(struct dive *dive)
selected_dive = divenr;
dive->selected = TRUE;
go_to_iter(selection, iter);
+ gtk_tree_iter_free(iter);
}
void select_next_dive(void)
{
- GtkTreeIter *nextiter, *parent;
+ GtkTreeIter *nextiter, *parent = NULL;
GtkTreeIter *iter = get_iter_from_idx(selected_dive);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
int idx;
@@ -2983,11 +2984,14 @@ void select_next_dive(void)
return;
}
go_to_iter(selection, nextiter);
+ if (parent)
+ gtk_tree_iter_free(parent);
+ gtk_tree_iter_free(iter);
}
void select_prev_dive(void)
{
- GtkTreeIter previter, *parent;
+ GtkTreeIter previter, *parent = NULL;
GtkTreeIter *iter = get_iter_from_idx(selected_dive);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
GtkTreePath *treepath;
@@ -3021,4 +3025,7 @@ void select_prev_dive(void)
go_to_iter(selection, &previter);
free_path:
gtk_tree_path_free(treepath);
+ if (parent)
+ gtk_tree_iter_free(parent);
+ gtk_tree_iter_free(iter);
}