diff --git a/src/Symfony/Component/ExpressionLanguage/Parser.php b/src/Symfony/Component/ExpressionLanguage/Parser.php index f0d2321241..db4b5858b1 100644 --- a/src/Symfony/Component/ExpressionLanguage/Parser.php +++ b/src/Symfony/Component/ExpressionLanguage/Parser.php @@ -190,7 +190,7 @@ class Parser $node = new Node\FunctionNode($token->value, $this->parseArguments()); } else { - if (!in_array($token->value, $this->names)) { + if (!in_array($token->value, $this->names, true)) { throw new SyntaxError(sprintf('Variable "%s" is not valid', $token->value), $token->cursor); } diff --git a/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php b/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php index 3be677ca76..4cbab6591f 100644 --- a/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php +++ b/src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php @@ -28,6 +28,17 @@ class ParserTest extends \PHPUnit_Framework_TestCase $parser->parse($lexer->tokenize('foo')); } + /** + * @expectedException \Symfony\Component\ExpressionLanguage\SyntaxError + * @expectedExceptionMessage Variable "foo" is not valid around position 1. + */ + public function testParseWithZeroInNames() + { + $lexer = new Lexer(); + $parser = new Parser(array()); + $parser->parse($lexer->tokenize('foo'), array(0)); + } + /** * @dataProvider getParseData */