Fix a corner case where purple_markup_html_to_xhtml generated malformed XHTML.

Sun, 24 Jan 2010 05:15:33 +0000

author
Paul Aurich <darkrain42@pidgin.im>
date
Sun, 24 Jan 2010 05:15:33 +0000
changeset 29227
3e9734bf4422
parent 29226
88232e6c5591
child 29228
18dd315eb3e0

Fix a corner case where purple_markup_html_to_xhtml generated malformed XHTML.

<FONT>blah</FONT> would turn into x</span>. This is pretty bad, since
that's what Adium passes to libpurple when the text had no markup, and is
what causes XMPP messages sent in Adium to look like:
<body>.</body><body xmlns='http://www.w3.org/1999/xhtml'>.</body>

libpurple/tests/test_util.c file | annotate | diff | comparison | revisions
libpurple/util.c file | annotate | diff | comparison | revisions
--- a/libpurple/tests/test_util.c	Sun Jan 24 03:53:36 2010 +0000
+++ b/libpurple/tests/test_util.c	Sun Jan 24 05:15:33 2010 +0000
@@ -113,6 +113,11 @@
 	purple_markup_html_to_xhtml("<a>", &xhtml, &plaintext);
 	assert_string_equal_free("<a href=\"\"></a>", xhtml);
 	assert_string_equal_free("", plaintext);
+
+
+	purple_markup_html_to_xhtml("<FONT>x</FONT>", &xhtml, &plaintext);
+	assert_string_equal_free("x", xhtml);
+	assert_string_equal_free("x", plaintext);
 }
 END_TEST
 
--- a/libpurple/util.c	Sun Jan 24 03:53:36 2010 +0000
+++ b/libpurple/util.c	Sun Jan 24 05:15:33 2010 +0000
@@ -1519,7 +1519,7 @@
 				if(tag) {
 					while(tags) {
 						struct purple_parse_tag *pt = tags->data;
-						if(xhtml)
+						if(xhtml && !pt->ignore)
 							g_string_append_printf(xhtml, "</%s>", pt->dest_tag);
 						if(plain && purple_strequal(pt->src_tag, "a")) {
 							/* if this is a link, we have to add the url to the plaintext, too */

mercurial