diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2013-02-09 21:29:58 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-02-09 11:40:03 -0800 |
commit | 363c38f5578e6ab08ac4e80bb585ddd12f91c263 (patch) | |
tree | 703ae570ecacea4a8b829de147f32b2e6a1e15d7 /divelist.c | |
parent | 3848cac30f3b7cd96d8add37fc3576f2ff00093e (diff) | |
download | subsurface-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.c | 11 |
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); } |