diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2009-08-12 01:02:51 +0800 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2009-08-19 01:03:39 +0800 |
commit | 77363aa431aaa9a2938bf547500a3c2ce2cd17c2 (patch) | |
tree | 840df2607262eca25a5e9f6c148bcc92ccd9d899 | |
parent | f0a0befc9453c490d9db7c820708b49481c30f96 (diff) | |
download | gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar.gz gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar.bz2 gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar.lz gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar.xz gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.tar.zst gsoc2013-empathy-77363aa431aaa9a2938bf547500a3c2ce2cd17c2.zip |
Don't assume that 'subscribe' exists.
This fixes bug #591468, which is a crash when you open a tab to a
contact from the user list in an IRC channel. Idle doesn't have a
'subscribe' list, so priv->subscribe is NULL, so this crashed. But if
you don't have a subscribe list, obviously you can't add the contact to
subscribe, so we can just guard this appropriately.
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-rw-r--r-- | libempathy/empathy-tp-contact-list.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/libempathy/empathy-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c index 7c94bc756..cb03a97b5 100644 --- a/libempathy/empathy-tp-contact-list.c +++ b/libempathy/empathy-tp-contact-list.c @@ -1165,21 +1165,24 @@ tp_contact_list_get_flags (EmpathyContactList *list) { EmpathyTpContactListPriv *priv; EmpathyContactListFlags flags; - TpChannelGroupFlags group_flags; g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), FALSE); priv = GET_PRIV (list); flags = priv->flags; - group_flags = tp_channel_group_get_flags (priv->subscribe); + if (priv->subscribe != NULL) { + TpChannelGroupFlags group_flags; - if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_ADD) { - flags |= EMPATHY_CONTACT_LIST_CAN_ADD; - } + group_flags = tp_channel_group_get_flags (priv->subscribe); + + if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_ADD) { + flags |= EMPATHY_CONTACT_LIST_CAN_ADD; + } - if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_REMOVE) { - flags |= EMPATHY_CONTACT_LIST_CAN_REMOVE; + if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_REMOVE) { + flags |= EMPATHY_CONTACT_LIST_CAN_REMOVE; + } } return flags; |