Aleksander Machniak
2014-05-12 d9d276ea700186a11c6525fec375160a76229b76
Improve _convert_line() performance
1 files modified
22 ■■■■■ changed files
program/lib/Roundcube/rcube_text2html.php 22 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_text2html.php
@@ -259,14 +259,20 @@
        // replace spaces with non-breaking spaces
        if ($is_flowed) {
            $text = preg_replace_callback('/(^|[^ ])( +)/', function($matches) {
                    if (!strlen($matches[2])) {
                        return str_repeat($nbsp, strlen($matches[2]));
                    }
                    else {
                        return $matches[1] . ' ' . str_repeat($nbsp, strlen($matches[2])-1);
                    }
                }, $text);
            $pos  = 0;
            $diff = 0;
            $len  = strlen($nbsp);
            $copy = $text;
            while (($pos = strpos($text, ' ', $pos)) !== false) {
                if ($pos == 0 || $text[$pos-1] == ' ') {
                    $copy = substr_replace($copy, $nbsp, $pos + $diff, 1);
                    $diff += $len - 1;
                }
                $pos++;
            }
            $text = $copy;
        }
        else {
            $text = str_replace(' ', $nbsp, $text);