Aleksander Machniak
2016-04-13 e2ff7985dbcf2ff56644cae9e8d14a06ce4242c3
Small optimization in sieve script parser
1 files modified
14 ■■■■ changed files
plugins/managesieve/lib/Roundcube/rcube_sieve_script.php 14 ●●●● patch | view | raw | blame | history
plugins/managesieve/lib/Roundcube/rcube_sieve_script.php
@@ -1090,6 +1090,7 @@
    {
        $result = array();
        $length = strlen($str);
        $mask   = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:_';
        // remove spaces from the beginning of the string
        while ($position < $length && (!$num || $num === true || count($result) < $num)) {
@@ -1175,18 +1176,11 @@
                if ($position == $length) {
                    break 2;
                }
                if ($length - $position < 2) {
                    $result[] = substr($str, $position);
                    $position = $length;
                    break;
                }
                // tag/identifier/number
                if (preg_match('/[a-zA-Z0-9:_]+/', $str, $m, PREG_OFFSET_CAPTURE, $position)
                    && $m[0][1] == $position
                ) {
                    $atom      = $m[0][0];
                    $position += strlen($atom);
                if ($len = strspn($str, $mask, $position)) {
                    $atom      = substr($str, $position, $len);
                    $position += $len;
                    if ($atom != 'text:') {
                        $result[] = $atom;