aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-individual-manager.c
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2011-09-06 18:06:30 +0800
committerWill Thompson <will.thompson@collabora.co.uk>2011-09-07 01:34:18 +0800
commit36ef8807996629af42cec57fdb2adf4799b1cba4 (patch)
treeac1f99fe465498e2bca83f783409e913b38c58c7 /libempathy/empathy-individual-manager.c
parentf05b344066594fc4acd07865b70a6865d599c5d6 (diff)
downloadgsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar.gz
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar.bz2
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar.lz
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar.xz
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.tar.zst
gsoc2013-empathy-36ef8807996629af42cec57fdb2adf4799b1cba4.zip
IndividualManager: disconnect handler from aggregator
Previously, the handler for FolksIndividualAggregator::individuals-changed was never disconnected; thus it could be called after EmpathyIndividualManager dies (if its aggregator outlives it), and crash us. https://bugzilla.gnome.org/show_bug.cgi?id=658340
Diffstat (limited to 'libempathy/empathy-individual-manager.c')
-rw-r--r--libempathy/empathy-individual-manager.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libempathy/empathy-individual-manager.c b/libempathy/empathy-individual-manager.c
index 47a01cb8d..7b6adef97 100644
--- a/libempathy/empathy-individual-manager.c
+++ b/libempathy/empathy-individual-manager.c
@@ -234,6 +234,9 @@ individual_manager_dispose (GObject *object)
EmpathyIndividualManagerPriv *priv = GET_PRIV (object);
g_hash_table_destroy (priv->individuals);
+
+ g_signal_handlers_disconnect_by_func (priv->aggregator,
+ aggregator_individuals_changed_cb, object);
tp_clear_object (&priv->aggregator);
G_OBJECT_CLASS (empathy_individual_manager_parent_class)->dispose (object);