[empathy] Don't assume that 'subscribe' exists.



commit 77363aa431aaa9a2938bf547500a3c2ce2cd17c2
Author: Will Thompson <will thompson collabora co uk>
Date:   Tue Aug 11 18:02:51 2009 +0100

    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>

 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 7c94bc7..cb03a97 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]