diff options
author | Philip Withnall <philip.withnall@collabora.co.uk> | 2013-10-18 21:24:15 +0800 |
---|---|---|
committer | Philip Withnall <philip.withnall@collabora.co.uk> | 2013-10-22 17:36:18 +0800 |
commit | 5d618c618444363615431646471df7670ed76cf1 (patch) | |
tree | 8d776cd584cd3a8dde834e5d419b245c2deacea6 /libempathy-gtk/empathy-roster-model-aggregator.c | |
parent | 176724235b5de1370db15f2be7bc6a7f58f7a2b9 (diff) | |
download | gsoc2013-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.c | 13 |
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); |