From c99ca863ce5b3d217fd9eb11b588705f4e252663 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Sat, 15 Mar 2025 09:10:43 +0100 Subject: [PATCH] php_shrink: Move add_apo_slashes to compile.php --- compile.php | 4 ++++ php_shrink.inc.php | 8 ++------ tests/php_shrink.php | 3 +++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/compile.php b/compile.php index 0585d071..47656e90 100755 --- a/compile.php +++ b/compile.php @@ -5,6 +5,10 @@ include __DIR__ . "/adminer/include/errors.inc.php"; include __DIR__ . "/php_shrink.inc.php"; include __DIR__ . "/externals/JsShrink/jsShrink.php"; +function add_apo_slashes($s) { + return addcslashes($s, "\\'"); +} + function add_quo_slashes($s) { $return = $s; $return = addcslashes($return, "\n\r\$\"\\"); diff --git a/php_shrink.inc.php b/php_shrink.inc.php index c4e79cfe..6bc45a12 100644 --- a/php_shrink.inc.php +++ b/php_shrink.inc.php @@ -55,10 +55,10 @@ function php_shrink($input) { foreach ($tokens as $i => $token) { if ( $tokens[$i+2][0] === T_CLOSE_TAG && $tokens[$i+3][0] === T_INLINE_HTML && $tokens[$i+4][0] === T_OPEN_TAG - && strlen(add_apo_slashes($tokens[$i+3][1])) < strlen($tokens[$i+3][1]) + 3 + && strlen(addcslashes($tokens[$i+3][1], "\\'")) < strlen($tokens[$i+3][1]) + 3 ) { $tokens[$i+2] = array(T_ECHO, 'echo'); - $tokens[$i+3] = array(T_CONSTANT_ENCAPSED_STRING, "'" . add_apo_slashes($tokens[$i+3][1]) . "'"); + $tokens[$i+3] = array(T_CONSTANT_ENCAPSED_STRING, "'" . addcslashes($tokens[$i+3][1], "\\'") . "'"); $tokens[$i+4] = array(0, ';'); } } @@ -140,7 +140,3 @@ function short_identifier($number, $chars) { } return $return; } - -function add_apo_slashes($s) { - return addcslashes($s, "\\'"); -} diff --git a/tests/php_shrink.php b/tests/php_shrink.php index 41f4cb9c..505245e6 100644 --- a/tests/php_shrink.php +++ b/tests/php_shrink.php @@ -13,6 +13,9 @@ function check($code, $expected) { //! bugs: check('{if (true) {} echo 1;}', '{if(true);echo 1;}'); +//! inefficiencies +check('echo "a"."b",\'c\'."d$a"."e";', 'echo "abcd$a"."e"'); + check('$ab = 1; echo $ab;', '$a=1;echo$a;'); check('$ab = 1; $cd = 2;', '$a=1;$b=2;'); check('define("AB", 1);', 'define("AB",1);');