eion/purple-hangouts

00ee0103bd61
Parents aa92b48daf81
Children 030e64028291
Fix refcounting of messages received from the network with purple3

purple3 takes the reference for the PurpleMessage passed to
purple_conversation_write_message(). The purple2 compat needs to
destroy the message. This patch removes the explicit calls to
purple_message_destroy() and changes the
purple_conversation_write_message() compat for purple2 to call
purple_message_destroy() internally.
--- a/hangouts_events.c Tue Sep 25 16:12:54 2018 -0500
+++ b/hangouts_events.c Tue Oct 16 14:07:04 2018 -0500
@@ -556,7 +556,6 @@
}
purple_message_set_time(message, message_timestamp);
purple_conversation_write_message(PURPLE_CONVERSATION(imconv), message);
- purple_message_destroy(message);
}
}
}
@@ -756,7 +755,6 @@
}
purple_message_set_time(message, message_timestamp);
purple_conversation_write_message(PURPLE_CONVERSATION(imconv), message);
- purple_message_destroy(message);
}
}
@@ -803,7 +801,6 @@
PurpleMessage *img_message = purple_message_new_outgoing(gaia_id, url, msg_flags);
purple_message_set_time(img_message, message_timestamp);
purple_conversation_write_message(pconv, img_message);
- purple_message_destroy(img_message);
}
}
} else {
--- a/purplecompat.h Tue Sep 25 16:12:54 2018 -0500
+++ b/purplecompat.h Tue Oct 16 14:07:04 2018 -0500
@@ -94,7 +94,9 @@
#define PurpleMessage PurpleConvMessage
#define purple_message_set_time(msg, time) ((msg)->when = (time))
-#define purple_conversation_write_message(conv, msg) purple_conversation_write(conv, msg->who, msg->what, msg->flags, msg->when)
+#define purple_conversation_write_message(conv, msg) \
+ purple_conversation_write(conv, msg->who, msg->what, msg->flags, msg->when); \
+ purple_message_destroy(msg)
static inline PurpleMessage *
purple_message_new_outgoing(const gchar *who, const gchar *contents, PurpleMessageFlags flags)
{