Title: [138218] trunk/Source/WebCore
Revision
138218
Author
commit-qu...@webkit.org
Date
2012-12-19 21:28:21 -0800 (Wed, 19 Dec 2012)

Log Message

[BlackBerry] RSS reader mangles UTF-8
https://bugs.webkit.org/show_bug.cgi?id=105440

RIM PR 235099

Patch by Cosmin Truta <ctr...@rim.com> on 2012-12-19
Reviewed by Yong Li.
Reviewed internally by Liam Quinn.

The HTML string built from RSS parse data is encoded in UTF-8,
and it should not be converted to UTF-8 repeatedly.

* platform/network/blackberry/rss/RSSFilterStream.cpp:
(WebCore::RSSFilterStream::convertContentToHtml):
* platform/network/blackberry/rss/RSSGenerator.cpp:
(WebCore::RSSGenerator::generateHtml):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (138217 => 138218)


--- trunk/Source/WebCore/ChangeLog	2012-12-20 05:27:12 UTC (rev 138217)
+++ trunk/Source/WebCore/ChangeLog	2012-12-20 05:28:21 UTC (rev 138218)
@@ -1,3 +1,21 @@
+2012-12-19  Cosmin Truta  <ctr...@rim.com>
+
+        [BlackBerry] RSS reader mangles UTF-8
+        https://bugs.webkit.org/show_bug.cgi?id=105440
+
+        RIM PR 235099
+
+        Reviewed by Yong Li.
+        Reviewed internally by Liam Quinn.
+
+        The HTML string built from RSS parse data is encoded in UTF-8,
+        and it should not be converted to UTF-8 repeatedly.
+
+        * platform/network/blackberry/rss/RSSFilterStream.cpp:
+        (WebCore::RSSFilterStream::convertContentToHtml):
+        * platform/network/blackberry/rss/RSSGenerator.cpp:
+        (WebCore::RSSGenerator::generateHtml):
+
 2012-12-19  Jon Lee  <jon...@apple.com>
 
         Leak in StringImpl::createCFString()

Modified: trunk/Source/WebCore/platform/network/blackberry/rss/RSSFilterStream.cpp (138217 => 138218)


--- trunk/Source/WebCore/platform/network/blackberry/rss/RSSFilterStream.cpp	2012-12-20 05:27:12 UTC (rev 138217)
+++ trunk/Source/WebCore/platform/network/blackberry/rss/RSSFilterStream.cpp	2012-12-20 05:28:21 UTC (rev 138218)
@@ -525,9 +525,16 @@
     if (!success)
         return false;
 
+    // FIXME:
+    // The HTML string generated below purports to be a UTF8-encoded
+    // WTF::String, although its characters8() data should be Latin1.
+    // We build then extract this string, pretending that we don't know
+    // that we pass incorrectly-encoded char data both ways.
+    // We should use BlackBerry::Platform::String instead of WTF::String.
     OwnPtr<RSSGenerator> generator = adoptPtr(new RSSGenerator());
     String html = generator->generateHtml(parser->m_root);
-    result = html.utf8(String::StrictConversion).data();
+    ASSERT(html.is8Bit());
+    result.assign(reinterpret_cast<const char*>(html.characters8()), html.length());
 
     return true;
 }

Modified: trunk/Source/WebCore/platform/network/blackberry/rss/RSSGenerator.cpp (138217 => 138218)


--- trunk/Source/WebCore/platform/network/blackberry/rss/RSSGenerator.cpp	2012-12-20 05:27:12 UTC (rev 138217)
+++ trunk/Source/WebCore/platform/network/blackberry/rss/RSSGenerator.cpp	2012-12-20 05:28:21 UTC (rev 138218)
@@ -83,10 +83,10 @@
         builder.append(articleName);
         builder.appendLiteral("\" class=\"article\">\n<a href=""
         if (!item->m_link.isEmpty())
-            builder.append(item->m_link.utf8(String::StrictConversion).data());
+            builder.append(item->m_link);
         builder.appendLiteral("\"><b>");
         if (!item->m_title.isEmpty())
-            builder.append(item->m_title.utf8(String::StrictConversion).data());
+            builder.append(item->m_title);
         else
             builder.append(s_defaultEntryTitle);
         builder.appendLiteral("</b></a>\n<br />");
@@ -94,13 +94,13 @@
         if (!item->m_author.isEmpty()) {
             builder.append(i18n("By"));
             builder.appendLiteral(" <b>");
-            builder.append(item->m_author.utf8(String::StrictConversion).data());
+            builder.append(item->m_author);
             builder.appendLiteral("</b> ");
         } else {
             if (!feed->m_author.isEmpty()) {
                 builder.append(i18n("By"));
                 builder.appendLiteral(" <b>");
-                builder.append(feed->m_author.utf8(String::StrictConversion).data());
+                builder.append(feed->m_author);
                 builder.appendLiteral("</b> ");
             }
         }
@@ -113,7 +113,7 @@
 
             for (unsigned i = 0; i < item->m_categories.size() ; ++i) {
                 builder.appendLiteral("<b>");
-                builder.append(item->m_categories[i].utf8(String::StrictConversion).data());
+                builder.append(item->m_categories[i]);
                 builder.appendLiteral("</b>");
 
                 if (i < item->m_categories.size() - 1)
@@ -123,11 +123,11 @@
 
         builder.appendLiteral("<br />");
         if (!item->m_pubDate.isEmpty())
-            builder.append(item->m_pubDate.utf8(String::StrictConversion).data());
+            builder.append(item->m_pubDate);
 
         builder.appendLiteral("<br />");
         if (!item->m_description.isEmpty())
-            builder.append(item->m_description.utf8(String::StrictConversion).data());
+            builder.append(item->m_description);
         builder.appendLiteral("<br />");
 
         if (item->m_enclosure) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to