Bug correction: Parsing integers large than PHP_INT_MAX was generating trucated token...
authorPaulo Roberto Ribeiro <paulo@duocriativa.com.br>
Thu, 1 Dec 2011 19:54:23 +0000 (17:54 -0200)
committerPaulo Roberto Ribeiro <paulo@duocriativa.com.br>
Thu, 1 Dec 2011 19:54:23 +0000 (17:54 -0200)
lib/Twig/Lexer.php

index 6c75d45..7e62eac 100644 (file)
@@ -221,7 +221,13 @@ class Twig_Lexer implements Twig_LexerInterface
         }
         // numbers
         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]);
         }
         // punctuation