From 45be45c58fffce1b3e57942130b69600cc426457 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 27 May 2006 16:01:57 +0200 Subject: small improvements on JS compressor (maybe fixes #807) darcs-hash:20060527140157-7ad00-225a9ba66f658cc279cb44ebb04d483291d567d2.gz --- lib/exe/js.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/exe') diff --git a/lib/exe/js.php b/lib/exe/js.php index 7ff60710c..2aa9c4399 100644 --- a/lib/exe/js.php +++ b/lib/exe/js.php @@ -238,7 +238,7 @@ function js_compress($s){ $len = strlen($s); // items that don't need spaces next to them - $chars = '^&|!+\-*\/%=:;,{}()<>% \t\n\r'; + $chars = '^&|!+\-*\/%=\?:;,{}()<>% \t\n\r'; ob_start(); while($i < $len){ @@ -286,11 +286,12 @@ function js_compress($s){ // double quote strings if($ch == '"'){ $j = 1; - while( $s{$i+$j} != '"' ){ - while( ($s{$i+$j} != '\\') && ($s{$i+$j} != '"') ){ - $j = $j + 1; + while( $s{$i+$j} != '"' && ($i+$j < $len)){ + if( $s{$i+$j} == '\\' && $s{$i+$j+1} == '"' ){ + $j += 2; + }else{ + $j += 1; } - if($s{$i+$j} == '\\') $j = $j + 2; } echo substr($s,$i,$j+1); $i = $i + $j + 1; @@ -300,11 +301,12 @@ function js_compress($s){ // single quote strings if($ch == "'"){ $j = 1; - while( $s{$i+$j} != "'" ){ - while( ($s{$i+$j} != '\\') && ($s{$i+$j} != "'") ){ - $j = $j + 1; + while( $s{$i+$j} != "'" && ($i+$j < $len)){ + if( $s{$i+$j} == '\\' && $s{$i+$j+1} == "'" ){ + $j += 2; + }else{ + $j += 1; } - if ($s{$i+$j} == '\\') $j = $j + 2; } echo substr($s,$i,$j+1); $i = $i + $j + 1; -- cgit v1.2.3