Prevent potential doc comments in escaped inlined source

This commit is contained in:
Nicolas Grekas
2015-09-14 10:00:28 +02:00
parent 7c8ddbddbc
commit f35a540b1f
4 changed files with 9 additions and 7 deletions
+1 -1
View File
@@ -647,7 +647,7 @@ class Twig_Environment
$compiled = $this->compile($this->parse($this->tokenize($source, $name)), $source); $compiled = $this->compile($this->parse($this->tokenize($source, $name)), $source);
if (isset($source[0])) { if (isset($source[0])) {
$compiled .= '/* '.str_replace(array('*/', "\r\n", "\n", "\r"), array('*//*', "\n", "*/\n/* ", "*/\n/* "), $source)."*/\n"; $compiled .= '/* '.str_replace(array('*/', "\r\n", "\r", "\n"), array('*//* ', "\n", "\n", "*/\n/* "), $source)."*/\n";
} }
return $compiled; return $compiled;
+1 -1
View File
@@ -323,7 +323,7 @@ abstract class Twig_Template implements Twig_TemplateInterface
$i = 0; $i = 0;
while (isset($source[$i]) && '/* */' === substr_replace($source[$i], '', 3, -2)) { while (isset($source[$i]) && '/* */' === substr_replace($source[$i], '', 3, -2)) {
$source[$i] = str_replace('*//*', '*/', substr($source[$i], 3, -2)); $source[$i] = str_replace('*//* ', '*/', substr($source[$i], 3, -2));
++$i; ++$i;
} }
array_splice($source, $i); array_splice($source, $i);
+5 -3
View File
@@ -142,10 +142,12 @@ class Twig_Tests_EnvironmentTest extends PHPUnit_Framework_TestCase
{ {
$twig = new Twig_Environment($this->getMock('Twig_LoaderInterface')); $twig = new Twig_Environment($this->getMock('Twig_LoaderInterface'));
$source = "<? /*foo*/ ?>\r\nbar\n"; $source = "<? */*foo*/ ?>\r\nbar\n";
$expected = "/* <? /*foo*//* ?>*/\n/* bar*/\n/* */\n"; $expected = "/* <? *//* *foo*//* ?>*/\n/* bar*/\n/* */\n";
$compiled = $twig->compileSource($source, 'index');
$this->assertContains($expected, $twig->compileSource($source, 'index')); $this->assertContains($expected, $compiled);
$this->assertNotContains('/**', $compiled);
} }
public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate() public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate()
+2 -2
View File
@@ -88,7 +88,7 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
{ {
$template = new Twig_TemplateTest(new Twig_Environment($this->getMock('Twig_LoaderInterface')), false); $template = new Twig_TemplateTest(new Twig_Environment($this->getMock('Twig_LoaderInterface')), false);
$this->assertSame("<? /*bar*/ ?>\n", $template->getSource()); $this->assertSame("<? */*bar*/ ?>\n", $template->getSource());
} }
/** /**
@@ -470,7 +470,7 @@ class Twig_TemplateTest extends Twig_Template
} }
} }
} }
/* <? /*bar*//* ?>*/ /* <? *//* *bar*//* ?>*/
/* */ /* */
class Twig_TemplateArrayAccessObject implements ArrayAccess class Twig_TemplateArrayAccessObject implements ArrayAccess