aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2009-08-12 01:02:51 +0800
committerWill Thompson <will.thompson@collabora.co.uk>2009-08-19 01:03:39 +0800
commit77363aa431aaa9a2938bf547500a3c2ce2cd17c2 (patch)
tree840df2607262eca25a5e9f6c148bcc92ccd9d899 /libempathy
parentf0a0befc9453c490d9db7c820708b49481c30f96 (diff)
downloadgsoc2013-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>
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-contact-list.c17
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;