diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2009-08-19 17:32:01 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2009-08-19 17:32:01 +0100 |
commit | e10c29a3e01197a847b6689432ce931fa1c47b28 (patch) | |
tree | 01763a713c9c00f918a990386a6e3e79684851a4 /telepathy-glib/channel-group.c | |
parent | 329e66a29c2aab2888868785e54d0dd7894e8360 (diff) | |
download | telepathy-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.c | 7 |
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 |