--- a/libpurple/conversation.c Wed Jun 18 00:51:08 2014 +0530 +++ b/libpurple/conversation.c Fri Jun 27 01:07:11 2014 +0530 @@ -88,7 +88,8 @@ PurpleConnection *gc; PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv); PurpleMessage *msg; - char *displayed = NULL, *sent = NULL; + char *displayed = NULL; + const char *sent; int err = 0; g_return_if_fail(priv != NULL); @@ -113,9 +114,9 @@ if (displayed && (priv->features & PURPLE_CONNECTION_FLAG_HTML) && !(msgflags & PURPLE_MESSAGE_RAW)) { - sent = g_strdup(displayed); + sent = displayed; } else - sent = g_strdup(message); + sent = message; msgflags |= PURPLE_MESSAGE_SEND; @@ -130,8 +131,11 @@ err = purple_serv_send_im(gc, msg); - if ((err > 0) && (displayed != NULL)) + if ((err > 0) && (displayed != NULL)) { + /* revert the contents in case sending-im-msg changed it */ + purple_message_set_contents(msg, displayed); purple_conversation_write_message(conv, msg); + } purple_signal_emit(purple_conversations_get_handle(), "sent-im-msg", account, msg); @@ -187,7 +191,6 @@ } g_free(displayed); - g_free(sent); } static void