From 5d618c618444363615431646471df7670ed76cf1 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 18 Oct 2013 14:24:15 +0100 Subject: libempathy-gtk: Fix several memory leaks from libgee MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libgee’s GeeIterator returns a new reference from most of its methods, especially gee_iterable_iterator() and gee_iterator_get(). Add corresponding g_object_unref() calls. https://bugzilla.gnome.org/show_bug.cgi?id=710453 --- libempathy-gtk/empathy-roster-model-aggregator.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'libempathy-gtk/empathy-roster-model-aggregator.c') diff --git a/libempathy-gtk/empathy-roster-model-aggregator.c b/libempathy-gtk/empathy-roster-model-aggregator.c index 824e35d9e..26c8f2ae7 100644 --- a/libempathy-gtk/empathy-roster-model-aggregator.c +++ b/libempathy-gtk/empathy-roster-model-aggregator.c @@ -175,7 +175,9 @@ populate_individuals (EmpathyRosterModelAggregator *self) iter = gee_map_map_iterator (individuals); while (gee_map_iterator_next (iter)) { - add_individual (self, gee_map_iterator_get_value (iter)); + FolksIndividual *individual = gee_map_iterator_get_value (iter); + add_individual (self, individual); + g_object_unref (individual); } g_clear_object (&iter); } @@ -195,7 +197,9 @@ aggregator_individuals_changed_cb (FolksIndividualAggregator *aggregator, while (iter != NULL && gee_iterator_next (iter)) { - add_individual (self, gee_iterator_get (iter)); + FolksIndividual *individual = gee_iterator_get (iter); + add_individual (self, individual); + g_object_unref (individual); } g_clear_object (&iter); } @@ -206,7 +210,9 @@ aggregator_individuals_changed_cb (FolksIndividualAggregator *aggregator, while (iter != NULL && gee_iterator_next (iter)) { - remove_individual (self, gee_iterator_get (iter)); + FolksIndividual *individual = gee_iterator_get (iter); + remove_individual (self, individual); + g_object_unref (individual); } g_clear_object (&iter); } @@ -405,6 +411,7 @@ empathy_roster_model_aggregator_dup_groups_for_individual ( while (iter != NULL && gee_iterator_next (iter)) { + /* Transfer ownership: */ groups_list = g_list_prepend (groups_list, gee_iterator_get (iter)); } g_clear_object (&iter); -- cgit v1.2.3