]> git.0d.be Git - empathy.git/commitdiff
Don't assume that all FolksIndividuals have a corresponding EmpathyContact.
authorTravis Reitter <travis.reitter@collabora.co.uk>
Tue, 28 Jun 2011 04:29:31 +0000 (21:29 -0700)
committerJonny Lamb <jonnylamb@gnome.org>
Mon, 22 Aug 2011 09:36:33 +0000 (10:36 +0100)
Closes: bgo#653599 - Empathy shouldn't assume all TpfPersonas contain a
valid TpContact

Signed-off-by: Jonny Lamb <jonnylamb@gnome.org>
libempathy-gtk/empathy-individual-store.c
libempathy-gtk/empathy-individual-view.c

index 4bdded80b39f219a1140100afd236d56c5e4c6e8..83ee67e9b0c601ef83dca17180833bddc0d7a3c3 100644 (file)
@@ -1431,25 +1431,28 @@ individual_store_contact_sort (FolksIndividual *individual_a,
 
   contact_a = empathy_contact_dup_from_folks_individual (individual_a);
   contact_b = empathy_contact_dup_from_folks_individual (individual_b);
-  account_a = empathy_contact_get_account (contact_a);
-  account_b = empathy_contact_get_account (contact_b);
+  if (contact_a != NULL && contact_b != NULL)
+    {
+      account_a = empathy_contact_get_account (contact_a);
+      account_b = empathy_contact_get_account (contact_b);
 
-  g_assert (account_a != NULL);
-  g_assert (account_b != NULL);
+      g_assert (account_a != NULL);
+      g_assert (account_b != NULL);
 
-  /* protocol */
-  ret_val = g_strcmp0 (tp_account_get_protocol (account_a),
-      tp_account_get_protocol (account_b));
+      /* protocol */
+      ret_val = g_strcmp0 (tp_account_get_protocol (account_a),
+          tp_account_get_protocol (account_b));
 
-  if (ret_val != 0)
-    goto out;
+      if (ret_val != 0)
+        goto out;
 
-  /* account ID */
-  ret_val = g_strcmp0 (tp_proxy_get_object_path (account_a),
-      tp_proxy_get_object_path (account_b));
+      /* account ID */
+      ret_val = g_strcmp0 (tp_proxy_get_object_path (account_a),
+          tp_proxy_get_object_path (account_b));
 
-  if (ret_val != 0)
-    goto out;
+      if (ret_val != 0)
+        goto out;
+    }
 
   /* identifier */
   ret_val = g_utf8_collate (folks_individual_get_id (individual_a),
@@ -2003,8 +2006,12 @@ individual_store_get_individual_status_icon_with_icon_name (
   if (show_protocols_here)
     {
       contact = empathy_contact_dup_from_folks_individual (individual);
-      protocol_name = empathy_protocol_name_for_contact (contact);
-      icon_name = g_strdup_printf ("%s-%s", status_icon_name, protocol_name);
+      if (contact != NULL)
+        {
+          protocol_name = empathy_protocol_name_for_contact (contact);
+          icon_name = g_strdup_printf ("%s-%s", status_icon_name,
+              protocol_name);
+        }
     }
   else
     {
index db63f0c0df14b1926bc513a22d1a5a2d2d8d1553..9d23027fc0dceeb5dd321928a06c54577f993e6d 100644 (file)
@@ -692,7 +692,8 @@ individual_view_drag_motion (GtkWidget *widget,
           EmpathyContact *contact = NULL;
 
           contact = empathy_contact_dup_from_folks_individual (individual);
-          caps = empathy_contact_get_capabilities (contact);
+          if (contact != NULL)
+            caps = empathy_contact_get_capabilities (contact);
 
           tp_clear_object (&contact);
         }