From d61756663c599121fb1042ffb8b4817d84bde10e Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 10 Nov 2011 03:18:54 -0500
Subject: [PATCH] - Fix problem with parsing HTML message body with non-unicode characters (#1487813)

---
 CHANGELOG                   |    1 +
 tests/src/invalidchars.html |    1 +
 program/steps/mail/func.inc |    3 +++
 tests/mailfunc.php          |   11 +++++++++++
 4 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index b8688b2..3f7468b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix problem with parsing HTML message body with non-unicode characters (#1487813)
 - Add option to define matching method for addressbook search (#1486564, #1487907)
 - Make email recipients separator configurable
 - Fix so folders with \Noinferiors attribute aren't listed in parent selector
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 39c25f1..8407b06 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -639,6 +639,9 @@
   if (!$p['skip_washer_style_callback'])
     $washer->add_callback('style', 'rcmail_washtml_callback');
 
+  // Remove non-UTF8 characters (#1487813)
+  $html = rc_utf8_clean($html);
+
   $html = $washer->wash($html);
   $REMOTE_OBJECTS = $washer->extlinks;
 
diff --git a/tests/mailfunc.php b/tests/mailfunc.php
index 9d70bef..c6081a2 100644
--- a/tests/mailfunc.php
+++ b/tests/mailfunc.php
@@ -100,6 +100,17 @@
   }
 
   /**
+   * Test washtml class on non-unicode characters (#1487813)
+   */
+  function test_washtml_utf8()
+  {
+    $part = $this->get_html_part('src/invalidchars.html');
+    $washed = rcmail_print_body($part);
+
+    $this->assertPattern('/<p>символ<\/p>/', $washed, "Remove non-unicode characters from HTML message body");
+  }
+
+  /**
    * Test links pattern replacements in plaintext messages
    */
   function test_plaintext()
diff --git a/tests/src/invalidchars.html b/tests/src/invalidchars.html
new file mode 100644
index 0000000..bd460ea
--- /dev/null
+++ b/tests/src/invalidchars.html
@@ -0,0 +1 @@
+<p>сим�вол</p>

--
Gitblit v1.9.1