summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-04-13 11:43:18 +0200
committerAleksander Machniak <alec@alec.pl>2014-04-25 19:47:41 +0200
commitcbd5388d2e989b719fdfff2e5d13eb6225c3e675 (patch)
tree08c9f776f17cfc5fbdfee21521ea2af2d40bf308
parente94795536758c4b55c3fab8fdbae1b7eac96133e (diff)
Make sure mbstring susbtitute character is set to empty string in rcube_charset::clean()
-rw-r--r--program/lib/Roundcube/rcube_charset.php11
1 files changed, 8 insertions, 3 deletions
diff --git a/program/lib/Roundcube/rcube_charset.php b/program/lib/Roundcube/rcube_charset.php
index 8612e7fca..ffec67376 100644
--- a/program/lib/Roundcube/rcube_charset.php
+++ b/program/lib/Roundcube/rcube_charset.php
@@ -759,7 +759,12 @@ class rcube_charset
// iconv/mbstring are much faster (especially with long strings)
if (function_exists('mb_convert_encoding')) {
- if (($res = mb_convert_encoding($input, 'UTF-8', 'UTF-8')) !== false) {
+ $msch = mb_substitute_character('none');
+ mb_substitute_character('none');
+ $res = mb_convert_encoding($input, 'UTF-8', 'UTF-8');
+ mb_substitute_character($msch);
+
+ if ($res !== false) {
return $res;
}
}
@@ -795,8 +800,8 @@ class rcube_charset
}
$seq = '';
$out .= $chr;
- // first (or second) byte of multibyte sequence
}
+ // first (or second) byte of multibyte sequence
else if ($ord >= 0xC0) {
if (strlen($seq) > 1) {
$out .= preg_match($regexp, $seq) ? $seq : '';
@@ -806,8 +811,8 @@ class rcube_charset
$seq = '';
}
$seq .= $chr;
- // next byte of multibyte sequence
}
+ // next byte of multibyte sequence
else if ($seq) {
$seq .= $chr;
}