summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-06-10 11:16:15 +0100
committerEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-06-10 11:16:15 +0100
commit3c2afadceeb4c6174030f5d875298522553c39e3 (patch)
treecc11d987e7413b7d52aa4a864aaa5b17f55c0e45
parentc13a9b0416ad2cb9731641082214ae5e67d33a21 (diff)
parent0f7b303eca8ee3c3bdd947ea47249a522c523797 (diff)
downloadempathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.gz
Merge branch 'ppa-bug-fixes' into debian
-rw-r--r--libempathy-gtk/empathy-log-window.c2
-rw-r--r--libempathy/empathy-contact.c28
-rw-r--r--libempathy/empathy-tp-chat.c2
3 files changed, 24 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index d2f0a65b5..9f26a5ef8 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -2488,7 +2488,7 @@ log_window_got_messages_for_date_cb (GObject *manager,
{
EmpathyMessage *msg = empathy_message_from_tpl_log_event (event);
log_window_append_message (event, msg);
- g_object_unref (msg);
+ tp_clear_object (&msg);
}
g_object_unref (event);
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index 08798fc6c..52dc72bb3 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -627,16 +627,25 @@ empathy_contact_new (TpContact *tp_contact)
return retval;
}
+typedef struct
+{
+ TplEntity *entity;
+ TpAccount *account;
+} FindContactData;
+
static gboolean
contact_is_tpl_entity (gpointer key,
gpointer value,
gpointer user_data)
{
- TpContact *contact = key;
- TplEntity *entity = user_data;
+ EmpathyContact *contact = value;
+ FindContactData *data = user_data;
- return !tp_strdiff (tp_contact_get_identifier (contact),
- tpl_entity_get_identifier (entity));
+ return !tp_strdiff (empathy_contact_get_id (contact),
+ tpl_entity_get_identifier (data->entity)) &&
+ !tp_strdiff (tp_proxy_get_object_path (data->account),
+ tp_proxy_get_object_path (
+ empathy_contact_get_account (contact)));
}
EmpathyContact *
@@ -650,8 +659,15 @@ empathy_contact_from_tpl_contact (TpAccount *account,
g_return_val_if_fail (TPL_IS_ENTITY (tpl_entity), NULL);
if (contacts_table != NULL)
- existing_contact = g_hash_table_find (contacts_table,
- contact_is_tpl_entity, tpl_entity);
+ {
+ FindContactData data;
+
+ data.entity = tpl_entity;
+ data.account = account;
+
+ existing_contact = g_hash_table_find (contacts_table,
+ contact_is_tpl_entity, &data);
+ }
if (existing_contact != NULL)
{
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index 665e87549..4187038a1 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -396,7 +396,7 @@ handle_delivery_report (EmpathyTpChat *self,
* TpMessage. (fdo #35884) */
echo = tp_asv_get_boxed (header, "delivery-echo",
TP_ARRAY_TYPE_MESSAGE_PART_LIST);
- if (echo != NULL && echo->len >= 1) {
+ if (echo != NULL && echo->len >= 2) {
const GHashTable *echo_body;
echo_body = g_ptr_array_index (echo, 1);