aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-individual-menu.c
diff options
context:
space:
mode:
authorTravis Reitter <travis.reitter@collabora.co.uk>2011-06-28 05:31:25 +0800
committerJonny Lamb <jonnylamb@gnome.org>2011-08-22 17:36:33 +0800
commitd1d3a49fc919ed734b77a6e94afb2d49109182f2 (patch)
tree8c329ef17d60f70dba7f6695378142e229ab44e2 /libempathy-gtk/empathy-individual-menu.c
parent358fab1eb85cecb34ca45f492be2e623ab443a5e (diff)
downloadgsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar.gz
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar.bz2
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar.lz
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar.xz
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.tar.zst
gsoc2013-empathy-d1d3a49fc919ed734b77a6e94afb2d49109182f2.zip
Don't assume that all TpfPersonas contain valid TpContacts
Helps: bgo#653599 - Empathy shouldn't assume all TpfPersonas contain a valid TpContact Signed-off-by: Jonny Lamb <jonnylamb@gnome.org>
Diffstat (limited to 'libempathy-gtk/empathy-individual-menu.c')
-rw-r--r--libempathy-gtk/empathy-individual-menu.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c
index 6131bfdfd..eab28ec87 100644
--- a/libempathy-gtk/empathy-individual-menu.c
+++ b/libempathy-gtk/empathy-individual-menu.c
@@ -127,6 +127,9 @@ individual_menu_add_personas (GtkMenuShell *menu,
goto while_finish;
tp_contact = tpf_persona_get_contact (persona);
+ if (tp_contact == NULL)
+ goto while_finish;
+
contact = empathy_contact_dup_from_tp_contact (tp_contact);
store = folks_persona_get_store (FOLKS_PERSONA (persona));
@@ -1038,17 +1041,20 @@ room_sub_menu_activate_cb (GtkWidget *item,
if (empathy_folks_persona_is_interesting (FOLKS_PERSONA (persona)))
{
tp_contact = tpf_persona_get_contact (persona);
- contact = empathy_contact_dup_from_tp_contact (tp_contact);
+ if (tp_contact != NULL)
+ {
+ contact = empathy_contact_dup_from_tp_contact (tp_contact);
- rooms = empathy_chatroom_manager_get_chatrooms (mgr,
- empathy_contact_get_account (contact));
+ rooms = empathy_chatroom_manager_get_chatrooms (mgr,
+ empathy_contact_get_account (contact));
- if (g_list_find (rooms, data->chatroom) == NULL)
- g_clear_object (&contact);
+ if (g_list_find (rooms, data->chatroom) == NULL)
+ g_clear_object (&contact);
- /* if contact != NULL here, we've found our match */
+ /* if contact != NULL here, we've found our match */
- g_list_free (rooms);
+ g_list_free (rooms);
+ }
}
g_clear_object (&persona);
}
@@ -1143,13 +1149,17 @@ empathy_individual_invite_menu_item_new (FolksIndividual *individual,
if (empathy_folks_persona_is_interesting (FOLKS_PERSONA (persona)))
{
tp_contact = tpf_persona_get_contact (persona);
- contact_cur = empathy_contact_dup_from_tp_contact (tp_contact);
+ if (tp_contact != NULL)
+ {
+ contact_cur = empathy_contact_dup_from_tp_contact (
+ tp_contact);
- rooms_cur = empathy_chatroom_manager_get_chatrooms (mgr,
- empathy_contact_get_account (contact_cur));
- rooms = g_list_concat (rooms, rooms_cur);
+ rooms_cur = empathy_chatroom_manager_get_chatrooms (mgr,
+ empathy_contact_get_account (contact_cur));
+ rooms = g_list_concat (rooms, rooms_cur);
- g_object_unref (contact_cur);
+ g_object_unref (contact_cur);
+ }
}
g_clear_object (&persona);
}