summaryrefslogtreecommitdiff
path: root/telepathy-glib/channel-group.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2009-08-19 17:32:01 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2009-08-19 17:32:01 +0100
commite10c29a3e01197a847b6689432ce931fa1c47b28 (patch)
tree01763a713c9c00f918a990386a6e3e79684851a4 /telepathy-glib/channel-group.c
parent329e66a29c2aab2888868785e54d0dd7894e8360 (diff)
downloadtelepathy-glib-e10c29a3e01197a847b6689432ce931fa1c47b28.tar.gz
TpChannel: do not disconnect from a TpProxySignalConnection that's already gone
This is incorrect, and in practice, causes a crash.
Diffstat (limited to 'telepathy-glib/channel-group.c')
-rw-r--r--telepathy-glib/channel-group.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/telepathy-glib/channel-group.c b/telepathy-glib/channel-group.c
index 0d54891dd..553194c93 100644
--- a/telepathy-glib/channel-group.c
+++ b/telepathy-glib/channel-group.c
@@ -346,6 +346,13 @@ _got_initial_group_flags (TpChannel *self,
if (flags != 0)
g_object_notify ((GObject *) self, "group-flags");
+ if (tp_proxy_get_invalidated (self) != NULL)
+ {
+ /* Because the proxy has been invalidated, it is not safe to call
+ * tp_proxy_signal_connection_disconnect (below), so just return early */
+ return;
+ }
+
/* If the channel claims to support MembersChangedDetailed, disconnect from
* MembersChanged. Otherwise, disconnect from MembersChangedDetailed in case
* it secretly emits it anyway, so we're only listening to one change