aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-roster-model-aggregator.c
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2013-10-18 21:24:15 +0800
committerPhilip Withnall <philip.withnall@collabora.co.uk>2013-10-22 17:36:18 +0800
commit5d618c618444363615431646471df7670ed76cf1 (patch)
tree8d776cd584cd3a8dde834e5d419b245c2deacea6 /libempathy-gtk/empathy-roster-model-aggregator.c
parent176724235b5de1370db15f2be7bc6a7f58f7a2b9 (diff)
downloadgsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar.gz
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar.bz2
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar.lz
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar.xz
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.tar.zst
gsoc2013-empathy-5d618c618444363615431646471df7670ed76cf1.zip
libempathy-gtk: Fix several memory leaks from libgee
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
Diffstat (limited to 'libempathy-gtk/empathy-roster-model-aggregator.c')
-rw-r--r--libempathy-gtk/empathy-roster-model-aggregator.c13
1 files changed, 10 insertions, 3 deletions
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);