changeset 32368:ca4714f51bb1

propagate from branch 'im.pidgin.pidgin.2.x.y' (head 0c3ef8388ce0f274d695767f513518b859889979) to branch 'im.pidgin.pidgin' (head 8ee87bdc7a99e5d58bf700eaf08abe409ae4ede8)
author Ethan Blanton <elb@pidgin.im>
date Tue, 29 Nov 2011 03:59:09 +0000
parents 00ea5f8ef509 (diff) ae0fa8a95fd9 (current diff)
children 0734b9c8c345
files ChangeLog gaim-uninstalled.pc.in gaim.pc.in libpurple/gaim-compat.h libpurple/protocols/irc/parse.c libpurple/protocols/silc10/Makefile.am libpurple/protocols/silc10/Makefile.mingw libpurple/protocols/silc10/README libpurple/protocols/silc10/TODO libpurple/protocols/silc10/buddy.c libpurple/protocols/silc10/chat.c libpurple/protocols/silc10/ft.c libpurple/protocols/silc10/ops.c libpurple/protocols/silc10/pk.c libpurple/protocols/silc10/silc.c libpurple/protocols/silc10/silcpurple.h libpurple/protocols/silc10/util.c libpurple/protocols/silc10/wb.c libpurple/protocols/silc10/wb.h libpurple/purple-2-uninstalled.pc.in libpurple/purple-2.pc.in libpurple/purple-uninstalled.pc.in libpurple/purple.pc.in pidgin/gtkdocklet-gtk.c pidgin/gtkgaim-compat.h pidgin/pidgin-2-uninstalled.pc.in pidgin/pidgin-2.pc.in pidgin/pidgin-uninstalled.pc.in pidgin/pidgin.pc.in
diffstat 2 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Nov 28 08:52:34 2011 +0000
+++ b/ChangeLog	Tue Nov 29 03:59:09 2011 +0000
@@ -44,6 +44,10 @@
 	Gadu-Gadu:
 	* Fix problems linking against GnuTLS. (#14544)
 
+	IRC:
+	* Fix a leak when admitting UTF-8 text with a non-UTF-8 primary
+	  encoding.  (#14700)
+
 	Sametime:
 	* Separate "username" and "server" when adding new Sametime accounts.
 	  (#14608)
--- a/libpurple/protocols/irc/parse.c	Mon Nov 28 08:52:34 2011 +0000
+++ b/libpurple/protocols/irc/parse.c	Tue Nov 29 03:59:09 2011 +0000
@@ -260,6 +260,12 @@
 	gboolean autodetect;
 	int i;
 
+	autodetect = purple_account_get_bool(irc->account, "autodetect_utf8", IRC_DEFAULT_AUTODETECT);
+
+	if (autodetect && g_utf8_validate(string, -1, NULL)) {
+		return g_strdup(string);
+	}
+
 	enclist = purple_account_get_string(irc->account, "encoding", IRC_DEFAULT_CHARSET);
 	encodings = g_strsplit(enclist, ",", -1);
 
@@ -268,12 +274,6 @@
 		return purple_utf8_salvage(string);
 	}
 
-	autodetect = purple_account_get_bool(irc->account, "autodetect_utf8", IRC_DEFAULT_AUTODETECT);
-
-	if (autodetect && g_utf8_validate(string, -1, NULL)) {
-		return g_strdup(string);
-	}
-
 	for (i = 0; encodings[i] != NULL; i++) {
 		charset = encodings[i];
 		while (*charset == ' ')