diff --git a/src/JShrink/Minifier.php b/src/JShrink/Minifier.php index 9ddf41c..d4be0cf 100644 --- a/src/JShrink/Minifier.php +++ b/src/JShrink/Minifier.php @@ -112,6 +112,8 @@ class Minifier protected static $keywords = ["delete", "do", "for", "in", "instanceof", "return", "typeof", "yield"]; + protected $max_keyword_len; + /** * Contains lock ids which are used to replace certain code patterns and * prevent them from being minified @@ -189,6 +191,8 @@ protected function initialize($js, $options) $this->b = "\n"; $this->last_char = "\n"; $this->output = ""; + + $this->max_keyword_len = max(array_map('strlen', static::$keywords)); } /** @@ -658,7 +662,8 @@ protected static function isAlphaNumeric($char) protected function endsInKeyword() { # When this function is called A is not yet assigned to output. - $testOutput = $this->output . $this->a; + # Regular expression only needs to check final part of output for keyword. + $testOutput = substr($this->output . $this->a, -1 * ($this->max_keyword_len + 10)); foreach(static::$keywords as $keyword) { if (preg_match('/[^\w]'.$keyword.'[ ]?$/i', $testOutput) === 1) {