diff --git a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php index 6eb5a08347637..fade3b6796335 100644 --- a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php @@ -34,9 +34,9 @@ public function __construct($fileLinkFormat, $rootDir, $charset) $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); if ($fileLinkFormat && !is_array($fileLinkFormat)) { $i = max(strpos($fileLinkFormat, '%f'), strpos($fileLinkFormat, '%l')); - $i = strpos($fileLinkFormat, '#', $i) ?: strlen($fileLinkFormat); + $i = strpos($fileLinkFormat, '#"', $i) ?: strlen($fileLinkFormat); $fileLinkFormat = array(substr($fileLinkFormat, 0, $i), substr($fileLinkFormat, $i + 1)); - parse_str($fileLinkFormat[1], $fileLinkFormat[1]); + $fileLinkFormat[1] = @json_decode('{'.$fileLinkFormat[1].'}', true) ?: array(); } $this->fileLinkFormat = $fileLinkFormat; $this->rootDir = str_replace('/', DIRECTORY_SEPARATOR, dirname($rootDir)).DIRECTORY_SEPARATOR; diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php index e72ee4578b6e7..15536a62beb34 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php @@ -64,6 +64,6 @@ public function testGetName() protected function getExtension() { - return new CodeExtension('proto://%f#&line=%l#'.substr(__FILE__, 0, 5).'=foobar', '/root', 'UTF-8'); + return new CodeExtension('proto://%f#&line=%l#'.json_encode(substr(__FILE__, 0, 5)).':"foobar"', '/root', 'UTF-8'); } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/CodeHelper.php b/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/CodeHelper.php index 7e444abb62a13..3487e5d6073a4 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/CodeHelper.php +++ b/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/CodeHelper.php @@ -36,9 +36,9 @@ public function __construct($fileLinkFormat, $rootDir, $charset) $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); if ($fileLinkFormat && !is_array($fileLinkFormat)) { $i = max(strpos($fileLinkFormat, '%f'), strpos($fileLinkFormat, '%l')); - $i = strpos($fileLinkFormat, '#', $i) ?: strlen($fileLinkFormat); + $i = strpos($fileLinkFormat, '#"', $i) ?: strlen($fileLinkFormat); $fileLinkFormat = array(substr($fileLinkFormat, 0, $i), substr($fileLinkFormat, $i + 1)); - parse_str($fileLinkFormat[1], $fileLinkFormat[1]); + $fileLinkFormat[1] = @json_decode('{'.$fileLinkFormat[1].'}', true) ?: array(); } $this->fileLinkFormat = $fileLinkFormat; $this->rootDir = str_replace('\\', '/', $rootDir).'/'; diff --git a/src/Symfony/Component/Debug/ExceptionHandler.php b/src/Symfony/Component/Debug/ExceptionHandler.php index 3c68bfbf79c68..1c0087bba9279 100644 --- a/src/Symfony/Component/Debug/ExceptionHandler.php +++ b/src/Symfony/Component/Debug/ExceptionHandler.php @@ -40,9 +40,9 @@ public function __construct($debug = true, $charset = null, $fileLinkFormat = nu $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); if ($fileLinkFormat && !is_array($fileLinkFormat)) { $i = max(strpos($fileLinkFormat, '%f'), strpos($fileLinkFormat, '%l')); - $i = strpos($fileLinkFormat, '#', $i) ?: strlen($fileLinkFormat); + $i = strpos($fileLinkFormat, '#"', $i) ?: strlen($fileLinkFormat); $fileLinkFormat = array(substr($fileLinkFormat, 0, $i), substr($fileLinkFormat, $i + 1)); - parse_str($fileLinkFormat[1], $fileLinkFormat[1]); + $fileLinkFormat[1] = @json_decode('{'.$fileLinkFormat[1].'}', true) ?: array(); } $this->debug = $debug; $this->charset = $charset ?: ini_get('default_charset') ?: 'UTF-8'; @@ -97,9 +97,9 @@ public function setFileLinkFormat($fileLinkFormat) { $old = $this->fileLinkFormat; if ($fileLinkFormat && !is_array($fileLinkFormat)) { - $i = strpos($fileLinkFormat, '#') ?: strlen($fileLinkFormat); + $i = strpos($fileLinkFormat, '#"') ?: strlen($fileLinkFormat); $fileLinkFormat = array(substr($fileLinkFormat, 0, $i), substr($fileLinkFormat, $i + 1)); - parse_str($fileLinkFormat[1], $fileLinkFormat[1]); + $fileLinkFormat[1] = @json_decode('{'.$fileLinkFormat[1].'}', true) ?: array(); } $this->fileLinkFormat = $fileLinkFormat; if ($old) { diff --git a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php index d2a89b0eaaa4b..3b9eed491f97f 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php @@ -43,9 +43,9 @@ public function __construct(Stopwatch $stopwatch = null, $fileLinkFormat = null, $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); if ($fileLinkFormat && !is_array($fileLinkFormat)) { $i = max(strpos($fileLinkFormat, '%f'), strpos($fileLinkFormat, '%l')); - $i = strpos($fileLinkFormat, '#', $i) ?: strlen($fileLinkFormat); + $i = strpos($fileLinkFormat, '#"', $i) ?: strlen($fileLinkFormat); $fileLinkFormat = array(substr($fileLinkFormat, 0, $i), substr($fileLinkFormat, $i + 1)); - parse_str($fileLinkFormat[1], $fileLinkFormat[1]); + $fileLinkFormat[1] = @json_decode('{'.$fileLinkFormat[1].'}', true) ?: array(); } $this->stopwatch = $stopwatch; $this->fileLinkFormat = $fileLinkFormat;