libpurple/conversation.c

branch
soc.2013.gobjectification.plugins
changeset 37155
1aee6d5eefba
parent 37153
c0eccc6696da
parent 36125
03ba2ca0be88
child 38240
0552f69f1996
child 38281
df274be2afa2
--- 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

mercurial