diff options
author | Travis Reitter <travis.reitter@collabora.co.uk> | 2011-06-28 05:31:25 +0800 |
---|---|---|
committer | Jonny Lamb <jonnylamb@gnome.org> | 2011-08-22 17:36:33 +0800 |
commit | d1d3a49fc919ed734b77a6e94afb2d49109182f2 (patch) | |
tree | 8c329ef17d60f70dba7f6695378142e229ab44e2 /libempathy-gtk/empathy-individual-menu.c | |
parent | 358fab1eb85cecb34ca45f492be2e623ab443a5e (diff) | |
download | gsoc2013-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.c | 34 |
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); } |