Bug correction: Parsing integers large than PHP_INT_MAX was generating trucated token values.

This commit is contained in:
Paulo Roberto Ribeiro
2011-12-01 17:54:23 -02:00
parent 9a638a4a33
commit 046e4ffa23
+7 -1
View File
@@ -221,7 +221,13 @@ class Twig_Lexer implements Twig_LexerInterface
} }
// numbers // numbers
elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) { elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) {
$this->pushToken(Twig_Token::NUMBER_TYPE, ctype_digit($match[0]) ? (int) $match[0] : (float) $match[0]); $number = (float)$match[0]; // floats
if(ctype_digit($match[0])) {
if($number<=PHP_INT_MAX) {
$number = (int)$match[0]; // integers lower than the maximum
}
}
$this->pushToken(Twig_Token::NUMBER_TYPE, $number);
$this->moveCursor($match[0]); $this->moveCursor($match[0]);
} }
// punctuation // punctuation