]> granicus.if.org Git - php/commitdiff
Error on invalid octal (fixes PHPSadness #31)
authorAndrea Faulds <ajf@ajf.me>
Fri, 9 Jan 2015 06:32:36 +0000 (06:32 +0000)
committerAndrea Faulds <ajf@ajf.me>
Sat, 17 Jan 2015 18:50:28 +0000 (18:50 +0000)
Further error checks

71 files changed:
NEWS
UPGRADING
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
ext/standard/tests/array/array_rand_variation4.phpt
ext/standard/tests/array/array_rand_variation5.phpt
ext/standard/tests/array/array_sum_variation2.phpt
ext/standard/tests/array/shuffle_variation3.phpt
ext/standard/tests/array/shuffle_variation4.phpt
ext/standard/tests/array/uasort_variation4.phpt
ext/standard/tests/array/usort_variation4.phpt
ext/standard/tests/file/fscanf_variation18.phpt
ext/standard/tests/file/fscanf_variation2.phpt
ext/standard/tests/file/fscanf_variation20.phpt
ext/standard/tests/file/fscanf_variation27.phpt
ext/standard/tests/file/fscanf_variation45.phpt
ext/standard/tests/general_functions/is_int_64bit.phpt
ext/standard/tests/general_functions/is_numeric.phpt
ext/standard/tests/general_functions/strval.phpt
ext/standard/tests/general_functions/var_export-locale.phpt
ext/standard/tests/general_functions/var_export_basic1.phpt
ext/standard/tests/math/base_convert_basic.phpt
ext/standard/tests/math/decbin_basic.phpt
ext/standard/tests/math/dechex_basic.phpt
ext/standard/tests/math/decoct_basic.phpt
ext/standard/tests/password/password_needs_rehash.phpt
ext/standard/tests/strings/sprintf_basic8.phpt
ext/standard/tests/strings/sprintf_basic8_64bit.phpt
ext/standard/tests/strings/sprintf_variation10.phpt
ext/standard/tests/strings/sprintf_variation19.phpt
ext/standard/tests/strings/sprintf_variation21.phpt
ext/standard/tests/strings/sprintf_variation28.phpt
ext/standard/tests/strings/sprintf_variation28_64bit.phpt
ext/standard/tests/strings/sprintf_variation3.phpt
ext/standard/tests/strings/sprintf_variation34.phpt
ext/standard/tests/strings/sprintf_variation34_64bit.phpt
ext/standard/tests/strings/sprintf_variation40.phpt
ext/standard/tests/strings/sprintf_variation40_64bit.phpt
ext/standard/tests/strings/sprintf_variation46.phpt
ext/standard/tests/strings/vfprintf_basic8.phpt
ext/standard/tests/strings/vfprintf_variation11.phpt
ext/standard/tests/strings/vfprintf_variation11_64bit.phpt
ext/standard/tests/strings/vfprintf_variation13.phpt
ext/standard/tests/strings/vfprintf_variation13_64bit.phpt
ext/standard/tests/strings/vfprintf_variation19.phpt
ext/standard/tests/strings/vfprintf_variation19_64bit.phpt
ext/standard/tests/strings/vfprintf_variation3.phpt
ext/standard/tests/strings/vfprintf_variation5.phpt
ext/standard/tests/strings/vfprintf_variation9.phpt
ext/standard/tests/strings/vprintf_basic8.phpt
ext/standard/tests/strings/vprintf_variation11.phpt
ext/standard/tests/strings/vprintf_variation11_64bit.phpt
ext/standard/tests/strings/vprintf_variation13.phpt
ext/standard/tests/strings/vprintf_variation13_64bit.phpt
ext/standard/tests/strings/vprintf_variation19.phpt
ext/standard/tests/strings/vprintf_variation19_64bit.phpt
ext/standard/tests/strings/vprintf_variation3.phpt
ext/standard/tests/strings/vprintf_variation5.phpt
ext/standard/tests/strings/vprintf_variation9.phpt
ext/standard/tests/strings/vsprintf_basic8.phpt
ext/standard/tests/strings/vsprintf_variation11.phpt
ext/standard/tests/strings/vsprintf_variation11_64bit.phpt
ext/standard/tests/strings/vsprintf_variation13.phpt
ext/standard/tests/strings/vsprintf_variation13_64bit.phpt
ext/standard/tests/strings/vsprintf_variation19.phpt
ext/standard/tests/strings/vsprintf_variation19_64bit.phpt
ext/standard/tests/strings/vsprintf_variation3.phpt
ext/standard/tests/strings/vsprintf_variation5.phpt
ext/standard/tests/strings/vsprintf_variation9.phpt
tests/lang/invalid_octal.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 17b17c6951a23f7cc6935cefc7c95bcff5119641..3f62bbab683b3feac784653776939cd16883c4a9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -37,6 +37,7 @@
   . Removed scoped calls of non-static methods from an incompatible $this
     context. (Nikita)
   . Removed support for #-style comments in ini files. (Nikita)
+  . Invalid octal literals in source code now produce compile errors, fixes PHPSadness #31. (Andrea)
 
 - Date:
   . Fixed day_of_week function as it could sometimes return negative values
index e077053163e1c9521747dc410df4bf6deb2208c8..3cab7cc2a7b13234e04869b9609c8aebdb21bfe8 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -62,6 +62,9 @@ PHP X.Y UPGRADE NOTES
   . Added zend_memnrstr, zend_memnrstr_ex.
   . Added hybrid sorting algo zend_sort for better performance.
   . Added stable sorting algo zend_insert_sort.
+  . Invalid octal literals in source code now produce compile errors, fixing
+    PHPSadness #31. Previously, the invalid digits (and any following valid 
+    digits) were simply ignored, such that 0781 became 7.
 
 - Date:
   . Removed $is_dst parameter from mktime() and gmmktime().
index f9f2c4ba07c2f8b550a7d262333c141d5a3e077c..6ef1bf11cb903fe379a12cd09fc64b68c462393c 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.6 */
+/* Generated by re2c 0.13.7.5 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -1126,7 +1126,7 @@ yyc_INITIAL:
 yy4:
        YYDEBUG(4, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1712 "Zend/zend_language_scanner.l"
+#line 1754 "Zend/zend_language_scanner.l"
        {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1189,7 +1189,7 @@ yy6:
 yy7:
        YYDEBUG(7, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1703 "Zend/zend_language_scanner.l"
+#line 1745 "Zend/zend_language_scanner.l"
        {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1204,7 +1204,7 @@ yy8:
        ++YYCURSOR;
        YYDEBUG(9, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1690 "Zend/zend_language_scanner.l"
+#line 1732 "Zend/zend_language_scanner.l"
        {
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
@@ -1240,7 +1240,7 @@ yy14:
 yy15:
        YYDEBUG(15, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1696 "Zend/zend_language_scanner.l"
+#line 1738 "Zend/zend_language_scanner.l"
        {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
@@ -1256,38 +1256,38 @@ yy16:
 yyc_ST_BACKQUOTE:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128,   0,   0,   0,   0,   0,   0,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
                };
                YYDEBUG(17, *YYCURSOR);
                YYFILL(2);
@@ -1316,7 +1316,7 @@ yyc_ST_BACKQUOTE:
 yy20:
                YYDEBUG(20, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2122 "Zend/zend_language_scanner.l"
+#line 2164 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1368,7 +1368,7 @@ yy22:
                ++YYCURSOR;
                YYDEBUG(23, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2066 "Zend/zend_language_scanner.l"
+#line 2108 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@ -1383,7 +1383,7 @@ yy25:
                ++YYCURSOR;
                YYDEBUG(26, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
@@ -1402,16 +1402,17 @@ yy27:
                        goto yy27;
                }
                if (yych == '-') goto yy32;
-               if (yych == '[') goto yy34;
+               if (yych <= '@') goto yy29;
+               if (yych <= '[') goto yy34;
 yy29:
                YYDEBUG(29, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1415 "Zend/zend_language_scanner.c"
+#line 1416 "Zend/zend_language_scanner.c"
 yy30:
                YYDEBUG(30, *YYCURSOR);
                ++YYCURSOR;
@@ -1422,7 +1423,7 @@ yy30:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1426 "Zend/zend_language_scanner.c"
+#line 1427 "Zend/zend_language_scanner.c"
 yy32:
                YYDEBUG(32, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1436,14 +1437,14 @@ yy34:
                ++YYCURSOR;
                YYDEBUG(35, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1447 "Zend/zend_language_scanner.c"
+#line 1448 "Zend/zend_language_scanner.c"
 yy36:
                YYDEBUG(36, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1461,51 +1462,51 @@ yy37:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1472 "Zend/zend_language_scanner.c"
+#line 1473 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128,   0,   0,   0,   0,   0,   0,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
                };
                YYDEBUG(39, *YYCURSOR);
                YYFILL(2);
@@ -1536,7 +1537,7 @@ yy41:
 yy42:
                YYDEBUG(42, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2072 "Zend/zend_language_scanner.l"
+#line 2114 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1585,7 +1586,7 @@ double_quotes_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng, '"');
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1589 "Zend/zend_language_scanner.c"
+#line 1590 "Zend/zend_language_scanner.c"
 yy43:
                YYDEBUG(43, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1596,12 +1597,12 @@ yy44:
                ++YYCURSOR;
                YYDEBUG(45, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2061 "Zend/zend_language_scanner.l"
+#line 2103 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
 }
-#line 1605 "Zend/zend_language_scanner.c"
+#line 1606 "Zend/zend_language_scanner.c"
 yy46:
                YYDEBUG(46, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1611,14 +1612,14 @@ yy47:
                ++YYCURSOR;
                YYDEBUG(48, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1622 "Zend/zend_language_scanner.c"
+#line 1623 "Zend/zend_language_scanner.c"
 yy49:
                YYDEBUG(49, *YYCURSOR);
                yyaccept = 0;
@@ -1630,16 +1631,17 @@ yy49:
                        goto yy49;
                }
                if (yych == '-') goto yy54;
-               if (yych == '[') goto yy56;
+               if (yych <= '@') goto yy51;
+               if (yych <= '[') goto yy56;
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1643 "Zend/zend_language_scanner.c"
+#line 1645 "Zend/zend_language_scanner.c"
 yy52:
                YYDEBUG(52, *YYCURSOR);
                ++YYCURSOR;
@@ -1650,7 +1652,7 @@ yy52:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1654 "Zend/zend_language_scanner.c"
+#line 1656 "Zend/zend_language_scanner.c"
 yy54:
                YYDEBUG(54, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1664,14 +1666,14 @@ yy56:
                ++YYCURSOR;
                YYDEBUG(57, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1675 "Zend/zend_language_scanner.c"
+#line 1677 "Zend/zend_language_scanner.c"
 yy58:
                YYDEBUG(58, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1689,14 +1691,14 @@ yy59:
                ++YYCURSOR;
                YYDEBUG(60, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1700 "Zend/zend_language_scanner.c"
+#line 1702 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
@@ -1707,7 +1709,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(64, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2039 "Zend/zend_language_scanner.l"
+#line 2081 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1720,43 +1722,43 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        return T_END_HEREDOC;
 }
-#line 1724 "Zend/zend_language_scanner.c"
+#line 1726 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128,   0,   0,   0,   0,   0,   0,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
                };
                YYDEBUG(65, *YYCURSOR);
                YYFILL(2);
@@ -1782,7 +1784,7 @@ yy67:
 yy68:
                YYDEBUG(68, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2164 "Zend/zend_language_scanner.l"
+#line 2206 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1855,7 +1857,7 @@ heredoc_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1859 "Zend/zend_language_scanner.c"
+#line 1861 "Zend/zend_language_scanner.c"
 yy69:
                YYDEBUG(69, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1870,14 +1872,14 @@ yy71:
                ++YYCURSOR;
                YYDEBUG(72, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1881 "Zend/zend_language_scanner.c"
+#line 1883 "Zend/zend_language_scanner.c"
 yy73:
                YYDEBUG(73, *YYCURSOR);
                yyaccept = 0;
@@ -1889,16 +1891,17 @@ yy73:
                        goto yy73;
                }
                if (yych == '-') goto yy78;
-               if (yych == '[') goto yy80;
+               if (yych <= '@') goto yy75;
+               if (yych <= '[') goto yy80;
 yy75:
                YYDEBUG(75, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1902 "Zend/zend_language_scanner.c"
+#line 1905 "Zend/zend_language_scanner.c"
 yy76:
                YYDEBUG(76, *YYCURSOR);
                ++YYCURSOR;
@@ -1909,7 +1912,7 @@ yy76:
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1913 "Zend/zend_language_scanner.c"
+#line 1916 "Zend/zend_language_scanner.c"
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1923,14 +1926,14 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1934 "Zend/zend_language_scanner.c"
+#line 1937 "Zend/zend_language_scanner.c"
 yy82:
                YYDEBUG(82, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1948,51 +1951,51 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1959 "Zend/zend_language_scanner.c"
+#line 1962 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0, 192,  64,   0,   0,  64,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       192,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                        60,  60,  44,  44,  44,  44,  44,  44,
-                        44,  44,   0,   0,   0,   0,   0,   0,
-                         0,  36,  36,  36,  36,  36,  36,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   0,   0,   0,   0,   4,
-                         0,  36,  36,  36,  36,  36,  36,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   0,   0,   0,   0,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
-                         4,   4,   4,   4,   4,   4,   4,   4,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0, 192,  64,   0,   0,  64,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       192,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                        60,  60,  44,  44,  44,  44,  44,  44, 
+                        44,  44,   0,   0,   0,   0,   0,   0, 
+                         0,  36,  36,  36,  36,  36,  36,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   0,   0,   0,   0,   4, 
+                         0,  36,  36,  36,  36,  36,  36,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   0,   0,   0,   0,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
+                         4,   4,   4,   4,   4,   4,   4,   4, 
                };
                YYDEBUG(85, *YYCURSOR);
                YYFILL(16);
@@ -2138,12 +2141,12 @@ yy87:
 yy88:
                YYDEBUG(88, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1800 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 2147 "Zend/zend_language_scanner.c"
+#line 2150 "Zend/zend_language_scanner.c"
 yy89:
                YYDEBUG(89, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2379,7 +2382,7 @@ yy103:
                {
        return yytext[0];
 }
-#line 2383 "Zend/zend_language_scanner.c"
+#line 2386 "Zend/zend_language_scanner.c"
 yy104:
                YYDEBUG(104, *YYCURSOR);
                ++YYCURSOR;
@@ -2393,7 +2396,7 @@ yy105:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 2397 "Zend/zend_language_scanner.c"
+#line 2400 "Zend/zend_language_scanner.c"
 yy106:
                YYDEBUG(106, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2408,7 +2411,7 @@ yy107:
                {
        return T_NS_SEPARATOR;
 }
-#line 2412 "Zend/zend_language_scanner.c"
+#line 2415 "Zend/zend_language_scanner.c"
 yy109:
                YYDEBUG(109, *YYCURSOR);
                yyaccept = 1;
@@ -2642,7 +2645,7 @@ yy132:
        yy_push_state(ST_IN_SCRIPTING);
        return '{';
 }
-#line 2646 "Zend/zend_language_scanner.c"
+#line 2649 "Zend/zend_language_scanner.c"
 yy134:
                YYDEBUG(134, *YYCURSOR);
                ++YYCURSOR;
@@ -2656,7 +2659,7 @@ yy134:
        }
        return '}';
 }
-#line 2660 "Zend/zend_language_scanner.c"
+#line 2663 "Zend/zend_language_scanner.c"
 yy136:
                YYDEBUG(136, *YYCURSOR);
                yyaccept = 2;
@@ -2684,25 +2687,46 @@ yy136:
 yy137:
                YYDEBUG(137, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1597 "Zend/zend_language_scanner.l"
+#line 1602 "Zend/zend_language_scanner.l"
                {
+       char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+               errno = 0;
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
+               /* This isn't an assert, we need to ensure 019 isn't valid octal
+                * Because the lexing itself doesn't do that for us
+                */
+               if (end != yytext + yyleng) {
+                       zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+               }
+               ZEND_ASSERT(!errno);
        } else {
                errno = 0;
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
                if (errno == ERANGE) { /* Overflow */
+                       errno = 0;
                        if (yytext[0] == '0') { /* octal overflow */
-                               ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, NULL));
+                               errno = 0;
+                               ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, &end));
                        } else {
-                               ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+                               ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+                       }
+                       /* Also not an assert for the same reason */
+                       if (end != yytext + yyleng) {
+                               zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
                        }
+                       ZEND_ASSERT(!errno);
                        return T_DNUMBER;
                }
+               /* Also not an assert for the same reason */
+               if (end != yytext + yyleng) {
+                       zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+               }
+               ZEND_ASSERT(!errno);
        }
        return T_LNUMBER;
 }
-#line 2706 "Zend/zend_language_scanner.c"
+#line 2730 "Zend/zend_language_scanner.c"
 yy138:
                YYDEBUG(138, *YYCURSOR);
                yyaccept = 2;
@@ -2730,7 +2754,7 @@ yy140:
 yy141:
                YYDEBUG(141, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1806 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -2759,14 +2783,14 @@ yy141:
 
        return T_COMMENT;
 }
-#line 2763 "Zend/zend_language_scanner.c"
+#line 2787 "Zend/zend_language_scanner.c"
 yy142:
                YYDEBUG(142, *YYCURSOR);
                ++YYCURSOR;
 yy143:
                YYDEBUG(143, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1874 "Zend/zend_language_scanner.l"
+#line 1916 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -2834,14 +2858,14 @@ yy143:
        }
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 2838 "Zend/zend_language_scanner.c"
+#line 2862 "Zend/zend_language_scanner.c"
 yy144:
                YYDEBUG(144, *YYCURSOR);
                ++YYCURSOR;
 yy145:
                YYDEBUG(145, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1943 "Zend/zend_language_scanner.l"
+#line 1985 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -2882,24 +2906,24 @@ yy145:
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 2886 "Zend/zend_language_scanner.c"
+#line 2910 "Zend/zend_language_scanner.c"
 yy146:
                YYDEBUG(146, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(147, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2033 "Zend/zend_language_scanner.l"
+#line 2075 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 2897 "Zend/zend_language_scanner.c"
+#line 2921 "Zend/zend_language_scanner.c"
 yy148:
                YYDEBUG(148, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(149, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2295 "Zend/zend_language_scanner.l"
+#line 2337 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -2908,7 +2932,7 @@ yy148:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 2912 "Zend/zend_language_scanner.c"
+#line 2936 "Zend/zend_language_scanner.c"
 yy150:
                YYDEBUG(150, *YYCURSOR);
                ++YYCURSOR;
@@ -2935,12 +2959,16 @@ yy152:
 yy154:
                YYDEBUG(154, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1652 "Zend/zend_language_scanner.l"
+#line 1690 "Zend/zend_language_scanner.l"
                {
-       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+       char *end;
+
+       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+       /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+       ZEND_ASSERT(end == yytext + yyleng);
        return T_DNUMBER;
 }
-#line 2944 "Zend/zend_language_scanner.c"
+#line 2972 "Zend/zend_language_scanner.c"
 yy155:
                YYDEBUG(155, *YYCURSOR);
                yyaccept = 2;
@@ -3036,6 +3064,7 @@ yy164:
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
+       char *end;
 
        /* Skip any leading 0s */
        while (*bin == '0') {
@@ -3047,15 +3076,19 @@ yy164:
                if (len == 0) {
                        ZVAL_LONG(zendlval, 0);
                } else {
-                       ZVAL_LONG(zendlval, ZEND_STRTOL(bin, NULL, 2));
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
+                       ZEND_ASSERT(!errno && end == yytext + yyleng);
                }
                return T_LNUMBER;
        } else {
-               ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));
+               ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, &end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == yytext + yyleng);
                return T_DNUMBER;
        }
 }
-#line 3059 "Zend/zend_language_scanner.c"
+#line 3092 "Zend/zend_language_scanner.c"
 yy167:
                YYDEBUG(167, *YYCURSOR);
                ++YYCURSOR;
@@ -3067,10 +3100,11 @@ yy167:
                }
                YYDEBUG(169, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1615 "Zend/zend_language_scanner.l"
+#line 1641 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
+       char *end;
 
        /* Skip any leading 0s */
        while (*hex == '0') {
@@ -3082,15 +3116,19 @@ yy167:
                if (len == 0) {
                        ZVAL_LONG(zendlval, 0);
                } else {
-                       ZVAL_LONG(zendlval, ZEND_STRTOL(hex, NULL, 16));
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
+                       ZEND_ASSERT(!errno && end == hex + len);
                }
                return T_LNUMBER;
        } else {
-               ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));
+               ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, &end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == hex + len);
                return T_DNUMBER;
        }
 }
-#line 3094 "Zend/zend_language_scanner.c"
+#line 3132 "Zend/zend_language_scanner.c"
 yy170:
                YYDEBUG(170, *YYCURSOR);
                ++YYCURSOR;
@@ -3115,12 +3153,12 @@ yy170:
 yy172:
                YYDEBUG(172, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 3124 "Zend/zend_language_scanner.c"
+#line 3162 "Zend/zend_language_scanner.c"
 yy173:
                YYDEBUG(173, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3138,7 +3176,7 @@ yy174:
                {
        return T_LOGICAL_XOR;
 }
-#line 3142 "Zend/zend_language_scanner.c"
+#line 3180 "Zend/zend_language_scanner.c"
 yy176:
                YYDEBUG(176, *YYCURSOR);
                ++YYCURSOR;
@@ -3151,7 +3189,7 @@ yy176:
                {
        return T_LOGICAL_OR;
 }
-#line 3155 "Zend/zend_language_scanner.c"
+#line 3193 "Zend/zend_language_scanner.c"
 yy178:
                YYDEBUG(178, *YYCURSOR);
                ++YYCURSOR;
@@ -3161,7 +3199,7 @@ yy178:
                {
        return T_XOR_EQUAL;
 }
-#line 3165 "Zend/zend_language_scanner.c"
+#line 3203 "Zend/zend_language_scanner.c"
 yy180:
                YYDEBUG(180, *YYCURSOR);
                ++YYCURSOR;
@@ -3171,7 +3209,7 @@ yy180:
                {
        return T_BOOLEAN_OR;
 }
-#line 3175 "Zend/zend_language_scanner.c"
+#line 3213 "Zend/zend_language_scanner.c"
 yy182:
                YYDEBUG(182, *YYCURSOR);
                ++YYCURSOR;
@@ -3181,7 +3219,7 @@ yy182:
                {
        return T_OR_EQUAL;
 }
-#line 3185 "Zend/zend_language_scanner.c"
+#line 3223 "Zend/zend_language_scanner.c"
 yy184:
                YYDEBUG(184, *YYCURSOR);
                ++YYCURSOR;
@@ -3191,7 +3229,7 @@ yy184:
                {
        return T_BOOLEAN_AND;
 }
-#line 3195 "Zend/zend_language_scanner.c"
+#line 3233 "Zend/zend_language_scanner.c"
 yy186:
                YYDEBUG(186, *YYCURSOR);
                ++YYCURSOR;
@@ -3201,7 +3239,7 @@ yy186:
                {
        return T_AND_EQUAL;
 }
-#line 3205 "Zend/zend_language_scanner.c"
+#line 3243 "Zend/zend_language_scanner.c"
 yy188:
                YYDEBUG(188, *YYCURSOR);
                ++YYCURSOR;
@@ -3211,7 +3249,7 @@ yy188:
                {
        return T_MOD_EQUAL;
 }
-#line 3215 "Zend/zend_language_scanner.c"
+#line 3253 "Zend/zend_language_scanner.c"
 yy190:
                YYDEBUG(190, *YYCURSOR);
                yyaccept = 4;
@@ -3220,7 +3258,7 @@ yy190:
 yy191:
                YYDEBUG(191, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1877 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3253,7 +3291,7 @@ yy191:
 
        return T_COMMENT;
 }
-#line 3257 "Zend/zend_language_scanner.c"
+#line 3295 "Zend/zend_language_scanner.c"
 yy192:
                YYDEBUG(192, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3267,7 +3305,7 @@ yy193:
                {
        return T_DIV_EQUAL;
 }
-#line 3271 "Zend/zend_language_scanner.c"
+#line 3309 "Zend/zend_language_scanner.c"
 yy195:
                YYDEBUG(195, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3295,7 +3333,7 @@ yy198:
                {
        return T_POW;
 }
-#line 3299 "Zend/zend_language_scanner.c"
+#line 3337 "Zend/zend_language_scanner.c"
 yy200:
                YYDEBUG(200, *YYCURSOR);
                ++YYCURSOR;
@@ -3305,7 +3343,7 @@ yy200:
                {
        return T_MUL_EQUAL;
 }
-#line 3309 "Zend/zend_language_scanner.c"
+#line 3347 "Zend/zend_language_scanner.c"
 yy202:
                YYDEBUG(202, *YYCURSOR);
                ++YYCURSOR;
@@ -3315,7 +3353,7 @@ yy202:
                {
        return T_POW_EQUAL;
 }
-#line 3319 "Zend/zend_language_scanner.c"
+#line 3357 "Zend/zend_language_scanner.c"
 yy204:
                YYDEBUG(204, *YYCURSOR);
                ++YYCURSOR;
@@ -3326,7 +3364,7 @@ yy204:
                {
        return T_SR;
 }
-#line 3330 "Zend/zend_language_scanner.c"
+#line 3368 "Zend/zend_language_scanner.c"
 yy206:
                YYDEBUG(206, *YYCURSOR);
                ++YYCURSOR;
@@ -3336,7 +3374,7 @@ yy206:
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3340 "Zend/zend_language_scanner.c"
+#line 3378 "Zend/zend_language_scanner.c"
 yy208:
                YYDEBUG(208, *YYCURSOR);
                ++YYCURSOR;
@@ -3346,7 +3384,7 @@ yy208:
                {
        return T_SR_EQUAL;
 }
-#line 3350 "Zend/zend_language_scanner.c"
+#line 3388 "Zend/zend_language_scanner.c"
 yy210:
                YYDEBUG(210, *YYCURSOR);
                yyaccept = 5;
@@ -3361,7 +3399,7 @@ yy211:
                {
        return T_SL;
 }
-#line 3365 "Zend/zend_language_scanner.c"
+#line 3403 "Zend/zend_language_scanner.c"
 yy212:
                YYDEBUG(212, *YYCURSOR);
                ++YYCURSOR;
@@ -3371,7 +3409,7 @@ yy212:
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3375 "Zend/zend_language_scanner.c"
+#line 3413 "Zend/zend_language_scanner.c"
 yy214:
                YYDEBUG(214, *YYCURSOR);
                ++YYCURSOR;
@@ -3382,7 +3420,7 @@ yy215:
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3386 "Zend/zend_language_scanner.c"
+#line 3424 "Zend/zend_language_scanner.c"
 yy216:
                YYDEBUG(216, *YYCURSOR);
                ++YYCURSOR;
@@ -3392,7 +3430,7 @@ yy216:
                {
        return T_SL_EQUAL;
 }
-#line 3396 "Zend/zend_language_scanner.c"
+#line 3434 "Zend/zend_language_scanner.c"
 yy218:
                YYDEBUG(218, *YYCURSOR);
                ++YYCURSOR;
@@ -3497,7 +3535,7 @@ yy227:
 yy228:
                YYDEBUG(228, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1985 "Zend/zend_language_scanner.l"
+#line 2027 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3544,7 +3582,7 @@ yy228:
 
        return T_START_HEREDOC;
 }
-#line 3548 "Zend/zend_language_scanner.c"
+#line 3586 "Zend/zend_language_scanner.c"
 yy229:
                YYDEBUG(229, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3588,7 +3626,7 @@ yy232:
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3592 "Zend/zend_language_scanner.c"
+#line 3630 "Zend/zend_language_scanner.c"
 yy235:
                YYDEBUG(235, *YYCURSOR);
                ++YYCURSOR;
@@ -3598,7 +3636,7 @@ yy235:
                {
        return T_PLUS_EQUAL;
 }
-#line 3602 "Zend/zend_language_scanner.c"
+#line 3640 "Zend/zend_language_scanner.c"
 yy237:
                YYDEBUG(237, *YYCURSOR);
                ++YYCURSOR;
@@ -3608,7 +3646,7 @@ yy237:
                {
        return T_INC;
 }
-#line 3612 "Zend/zend_language_scanner.c"
+#line 3650 "Zend/zend_language_scanner.c"
 yy239:
                YYDEBUG(239, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3631,7 +3669,7 @@ yy241:
                {
        return T_LIST;
 }
-#line 3635 "Zend/zend_language_scanner.c"
+#line 3673 "Zend/zend_language_scanner.c"
 yy243:
                YYDEBUG(243, *YYCURSOR);
                ++YYCURSOR;
@@ -3642,7 +3680,7 @@ yy243:
                {
        return T_IS_EQUAL;
 }
-#line 3646 "Zend/zend_language_scanner.c"
+#line 3684 "Zend/zend_language_scanner.c"
 yy245:
                YYDEBUG(245, *YYCURSOR);
                ++YYCURSOR;
@@ -3652,7 +3690,7 @@ yy245:
                {
        return T_DOUBLE_ARROW;
 }
-#line 3656 "Zend/zend_language_scanner.c"
+#line 3694 "Zend/zend_language_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                ++YYCURSOR;
@@ -3662,7 +3700,7 @@ yy247:
                {
        return T_IS_IDENTICAL;
 }
-#line 3666 "Zend/zend_language_scanner.c"
+#line 3704 "Zend/zend_language_scanner.c"
 yy249:
                YYDEBUG(249, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3792,11 +3830,11 @@ yy265:
                }
                YYDEBUG(268, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1685 "Zend/zend_language_scanner.l"
+#line 1727 "Zend/zend_language_scanner.l"
                {
        return T_NS_C;
 }
-#line 3800 "Zend/zend_language_scanner.c"
+#line 3838 "Zend/zend_language_scanner.c"
 yy269:
                YYDEBUG(269, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3816,11 +3854,11 @@ yy270:
                }
                YYDEBUG(273, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1681 "Zend/zend_language_scanner.l"
+#line 1723 "Zend/zend_language_scanner.l"
                {
        return T_DIR;
 }
-#line 3824 "Zend/zend_language_scanner.c"
+#line 3862 "Zend/zend_language_scanner.c"
 yy274:
                YYDEBUG(274, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3845,11 +3883,11 @@ yy276:
                }
                YYDEBUG(279, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1715 "Zend/zend_language_scanner.l"
                {
        return T_LINE;
 }
-#line 3853 "Zend/zend_language_scanner.c"
+#line 3891 "Zend/zend_language_scanner.c"
 yy280:
                YYDEBUG(280, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3884,11 +3922,11 @@ yy284:
                }
                YYDEBUG(287, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1669 "Zend/zend_language_scanner.l"
+#line 1711 "Zend/zend_language_scanner.l"
                {
        return T_METHOD_C;
 }
-#line 3892 "Zend/zend_language_scanner.c"
+#line 3930 "Zend/zend_language_scanner.c"
 yy288:
                YYDEBUG(288, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3939,11 +3977,11 @@ yy295:
                }
                YYDEBUG(298, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1665 "Zend/zend_language_scanner.l"
+#line 1707 "Zend/zend_language_scanner.l"
                {
        return T_FUNC_C;
 }
-#line 3947 "Zend/zend_language_scanner.c"
+#line 3985 "Zend/zend_language_scanner.c"
 yy299:
                YYDEBUG(299, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3963,11 +4001,11 @@ yy300:
                }
                YYDEBUG(303, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1677 "Zend/zend_language_scanner.l"
+#line 1719 "Zend/zend_language_scanner.l"
                {
        return T_FILE;
 }
-#line 3971 "Zend/zend_language_scanner.c"
+#line 4009 "Zend/zend_language_scanner.c"
 yy304:
                YYDEBUG(304, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3997,11 +4035,11 @@ yy307:
                }
                YYDEBUG(310, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1661 "Zend/zend_language_scanner.l"
+#line 1703 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT_C;
 }
-#line 4005 "Zend/zend_language_scanner.c"
+#line 4043 "Zend/zend_language_scanner.c"
 yy311:
                YYDEBUG(311, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4031,11 +4069,11 @@ yy314:
                }
                YYDEBUG(317, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1657 "Zend/zend_language_scanner.l"
+#line 1699 "Zend/zend_language_scanner.l"
                {
        return T_CLASS_C;
 }
-#line 4039 "Zend/zend_language_scanner.c"
+#line 4077 "Zend/zend_language_scanner.c"
 yy318:
                YYDEBUG(318, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4101,7 +4139,7 @@ yy329:
                {
        return T_HALT_COMPILER;
 }
-#line 4105 "Zend/zend_language_scanner.c"
+#line 4143 "Zend/zend_language_scanner.c"
 yy331:
                YYDEBUG(331, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4125,7 +4163,7 @@ yy333:
                {
        return T_USE;
 }
-#line 4129 "Zend/zend_language_scanner.c"
+#line 4167 "Zend/zend_language_scanner.c"
 yy335:
                YYDEBUG(335, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4148,7 +4186,7 @@ yy337:
                {
        return T_UNSET;
 }
-#line 4152 "Zend/zend_language_scanner.c"
+#line 4190 "Zend/zend_language_scanner.c"
 yy339:
                YYDEBUG(339, *YYCURSOR);
                ++YYCURSOR;
@@ -4324,7 +4362,7 @@ yy354:
                {
        return T_INT_CAST;
 }
-#line 4328 "Zend/zend_language_scanner.c"
+#line 4366 "Zend/zend_language_scanner.c"
 yy357:
                YYDEBUG(357, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4372,7 +4410,7 @@ yy362:
                {
        return T_DOUBLE_CAST;
 }
-#line 4376 "Zend/zend_language_scanner.c"
+#line 4414 "Zend/zend_language_scanner.c"
 yy366:
                YYDEBUG(366, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4446,7 +4484,7 @@ yy376:
                {
        return T_STRING_CAST;
 }
-#line 4450 "Zend/zend_language_scanner.c"
+#line 4488 "Zend/zend_language_scanner.c"
 yy380:
                YYDEBUG(380, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4483,7 +4521,7 @@ yy383:
                {
        return T_ARRAY_CAST;
 }
-#line 4487 "Zend/zend_language_scanner.c"
+#line 4525 "Zend/zend_language_scanner.c"
 yy387:
                YYDEBUG(387, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4525,7 +4563,7 @@ yy391:
                {
        return T_OBJECT_CAST;
 }
-#line 4529 "Zend/zend_language_scanner.c"
+#line 4567 "Zend/zend_language_scanner.c"
 yy395:
                YYDEBUG(395, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4570,7 +4608,7 @@ yy400:
                {
        return T_BOOL_CAST;
 }
-#line 4574 "Zend/zend_language_scanner.c"
+#line 4612 "Zend/zend_language_scanner.c"
 yy403:
                YYDEBUG(403, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4634,7 +4672,7 @@ yy411:
                {
        return T_UNSET_CAST;
 }
-#line 4638 "Zend/zend_language_scanner.c"
+#line 4676 "Zend/zend_language_scanner.c"
 yy415:
                YYDEBUG(415, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4652,7 +4690,7 @@ yy416:
                {
        return T_VAR;
 }
-#line 4656 "Zend/zend_language_scanner.c"
+#line 4694 "Zend/zend_language_scanner.c"
 yy418:
                YYDEBUG(418, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4676,7 +4714,7 @@ yy420:
                {
        return T_NEW;
 }
-#line 4680 "Zend/zend_language_scanner.c"
+#line 4718 "Zend/zend_language_scanner.c"
 yy422:
                YYDEBUG(422, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4719,7 +4757,7 @@ yy428:
                {
        return T_NAMESPACE;
 }
-#line 4723 "Zend/zend_language_scanner.c"
+#line 4761 "Zend/zend_language_scanner.c"
 yy430:
                YYDEBUG(430, *YYCURSOR);
                ++YYCURSOR;
@@ -4728,12 +4766,12 @@ yy430:
 yy431:
                YYDEBUG(431, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1868 "Zend/zend_language_scanner.l"
+#line 1910 "Zend/zend_language_scanner.l"
                {
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 4737 "Zend/zend_language_scanner.c"
+#line 4775 "Zend/zend_language_scanner.c"
 yy432:
                YYDEBUG(432, *YYCURSOR);
                ++YYCURSOR;
@@ -4743,7 +4781,7 @@ yy432:
                {
        return T_COALESCE;
 }
-#line 4747 "Zend/zend_language_scanner.c"
+#line 4785 "Zend/zend_language_scanner.c"
 yy434:
                YYDEBUG(434, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4778,7 +4816,7 @@ yy438:
                {
        return T_CONCAT_EQUAL;
 }
-#line 4782 "Zend/zend_language_scanner.c"
+#line 4820 "Zend/zend_language_scanner.c"
 yy440:
                YYDEBUG(440, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4791,7 +4829,7 @@ yy440:
                {
        return T_ELLIPSIS;
 }
-#line 4795 "Zend/zend_language_scanner.c"
+#line 4833 "Zend/zend_language_scanner.c"
 yy443:
                YYDEBUG(443, *YYCURSOR);
                ++YYCURSOR;
@@ -4801,7 +4839,7 @@ yy443:
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 4805 "Zend/zend_language_scanner.c"
+#line 4843 "Zend/zend_language_scanner.c"
 yy445:
                YYDEBUG(445, *YYCURSOR);
                ++YYCURSOR;
@@ -4827,7 +4865,7 @@ yy447:
                {
        return T_MINUS_EQUAL;
 }
-#line 4831 "Zend/zend_language_scanner.c"
+#line 4869 "Zend/zend_language_scanner.c"
 yy449:
                YYDEBUG(449, *YYCURSOR);
                ++YYCURSOR;
@@ -4837,7 +4875,7 @@ yy449:
                {
        return T_DEC;
 }
-#line 4841 "Zend/zend_language_scanner.c"
+#line 4879 "Zend/zend_language_scanner.c"
 yy451:
                YYDEBUG(451, *YYCURSOR);
                ++YYCURSOR;
@@ -4848,7 +4886,7 @@ yy451:
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        return T_OBJECT_OPERATOR;
 }
-#line 4852 "Zend/zend_language_scanner.c"
+#line 4890 "Zend/zend_language_scanner.c"
 yy453:
                YYDEBUG(453, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4897,7 +4935,7 @@ yy458:
                {
        return T_PUBLIC;
 }
-#line 4901 "Zend/zend_language_scanner.c"
+#line 4939 "Zend/zend_language_scanner.c"
 yy460:
                YYDEBUG(460, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4956,7 +4994,7 @@ yy467:
                {
        return T_PROTECTED;
 }
-#line 4960 "Zend/zend_language_scanner.c"
+#line 4998 "Zend/zend_language_scanner.c"
 yy469:
                YYDEBUG(469, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4990,7 +5028,7 @@ yy473:
                {
        return T_PRIVATE;
 }
-#line 4994 "Zend/zend_language_scanner.c"
+#line 5032 "Zend/zend_language_scanner.c"
 yy475:
                YYDEBUG(475, *YYCURSOR);
                ++YYCURSOR;
@@ -5003,7 +5041,7 @@ yy475:
                {
        return T_PRINT;
 }
-#line 5007 "Zend/zend_language_scanner.c"
+#line 5045 "Zend/zend_language_scanner.c"
 yy477:
                YYDEBUG(477, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5032,7 +5070,7 @@ yy480:
                {
        return T_GOTO;
 }
-#line 5036 "Zend/zend_language_scanner.c"
+#line 5074 "Zend/zend_language_scanner.c"
 yy482:
                YYDEBUG(482, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5060,7 +5098,7 @@ yy485:
                {
        return T_GLOBAL;
 }
-#line 5064 "Zend/zend_language_scanner.c"
+#line 5102 "Zend/zend_language_scanner.c"
 yy487:
                YYDEBUG(487, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5101,7 +5139,7 @@ yy493:
                {
        return T_BREAK;
 }
-#line 5105 "Zend/zend_language_scanner.c"
+#line 5143 "Zend/zend_language_scanner.c"
 yy495:
                YYDEBUG(495, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5145,7 +5183,7 @@ yy501:
                {
        return T_SWITCH;
 }
-#line 5149 "Zend/zend_language_scanner.c"
+#line 5187 "Zend/zend_language_scanner.c"
 yy503:
                YYDEBUG(503, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5173,7 +5211,7 @@ yy506:
                {
        return T_STATIC;
 }
-#line 5177 "Zend/zend_language_scanner.c"
+#line 5215 "Zend/zend_language_scanner.c"
 yy508:
                YYDEBUG(508, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5204,7 +5242,7 @@ yy511:
                {
        return T_AS;
 }
-#line 5208 "Zend/zend_language_scanner.c"
+#line 5246 "Zend/zend_language_scanner.c"
 yy513:
                YYDEBUG(513, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5227,7 +5265,7 @@ yy515:
                {
        return T_ARRAY;
 }
-#line 5231 "Zend/zend_language_scanner.c"
+#line 5269 "Zend/zend_language_scanner.c"
 yy517:
                YYDEBUG(517, *YYCURSOR);
                ++YYCURSOR;
@@ -5240,7 +5278,7 @@ yy517:
                {
        return T_LOGICAL_AND;
 }
-#line 5244 "Zend/zend_language_scanner.c"
+#line 5282 "Zend/zend_language_scanner.c"
 yy519:
                YYDEBUG(519, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5278,7 +5316,7 @@ yy524:
                {
        return T_ABSTRACT;
 }
-#line 5282 "Zend/zend_language_scanner.c"
+#line 5320 "Zend/zend_language_scanner.c"
 yy526:
                YYDEBUG(526, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5306,7 +5344,7 @@ yy529:
                {
        return T_WHILE;
 }
-#line 5310 "Zend/zend_language_scanner.c"
+#line 5348 "Zend/zend_language_scanner.c"
 yy531:
                YYDEBUG(531, *YYCURSOR);
                ++YYCURSOR;
@@ -5319,7 +5357,7 @@ yy531:
                {
        return T_IF;
 }
-#line 5323 "Zend/zend_language_scanner.c"
+#line 5361 "Zend/zend_language_scanner.c"
 yy533:
                YYDEBUG(533, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5375,7 +5413,7 @@ yy538:
                {
        return T_ISSET;
 }
-#line 5379 "Zend/zend_language_scanner.c"
+#line 5417 "Zend/zend_language_scanner.c"
 yy540:
                YYDEBUG(540, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5433,7 +5471,7 @@ yy547:
                {
        return T_INCLUDE;
 }
-#line 5437 "Zend/zend_language_scanner.c"
+#line 5475 "Zend/zend_language_scanner.c"
 yy548:
                YYDEBUG(548, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5466,7 +5504,7 @@ yy552:
                {
        return T_INCLUDE_ONCE;
 }
-#line 5470 "Zend/zend_language_scanner.c"
+#line 5508 "Zend/zend_language_scanner.c"
 yy554:
                YYDEBUG(554, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5504,7 +5542,7 @@ yy559:
                {
        return T_INTERFACE;
 }
-#line 5508 "Zend/zend_language_scanner.c"
+#line 5546 "Zend/zend_language_scanner.c"
 yy561:
                YYDEBUG(561, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5558,7 +5596,7 @@ yy567:
                {
         return T_INSTEADOF;
 }
-#line 5562 "Zend/zend_language_scanner.c"
+#line 5600 "Zend/zend_language_scanner.c"
 yy569:
                YYDEBUG(569, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5591,7 +5629,7 @@ yy573:
                {
        return T_INSTANCEOF;
 }
-#line 5595 "Zend/zend_language_scanner.c"
+#line 5633 "Zend/zend_language_scanner.c"
 yy575:
                YYDEBUG(575, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5639,7 +5677,7 @@ yy582:
                {
        return T_IMPLEMENTS;
 }
-#line 5643 "Zend/zend_language_scanner.c"
+#line 5681 "Zend/zend_language_scanner.c"
 yy584:
                YYDEBUG(584, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5671,7 +5709,7 @@ yy585:
                {
        return T_TRY;
 }
-#line 5675 "Zend/zend_language_scanner.c"
+#line 5713 "Zend/zend_language_scanner.c"
 yy588:
                YYDEBUG(588, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5694,7 +5732,7 @@ yy590:
                {
        return T_TRAIT;
 }
-#line 5698 "Zend/zend_language_scanner.c"
+#line 5736 "Zend/zend_language_scanner.c"
 yy592:
                YYDEBUG(592, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5717,7 +5755,7 @@ yy594:
                {
        return T_THROW;
 }
-#line 5721 "Zend/zend_language_scanner.c"
+#line 5759 "Zend/zend_language_scanner.c"
 yy596:
                YYDEBUG(596, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5745,7 +5783,7 @@ yy599:
                {
        return T_YIELD;
 }
-#line 5749 "Zend/zend_language_scanner.c"
+#line 5787 "Zend/zend_language_scanner.c"
 yy601:
                YYDEBUG(601, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5810,7 +5848,7 @@ yy608:
                {
        return T_REQUIRE;
 }
-#line 5814 "Zend/zend_language_scanner.c"
+#line 5852 "Zend/zend_language_scanner.c"
 yy609:
                YYDEBUG(609, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5843,7 +5881,7 @@ yy613:
                {
        return T_REQUIRE_ONCE;
 }
-#line 5847 "Zend/zend_language_scanner.c"
+#line 5885 "Zend/zend_language_scanner.c"
 yy615:
                YYDEBUG(615, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5866,7 +5904,7 @@ yy617:
                {
        return T_RETURN;
 }
-#line 5870 "Zend/zend_language_scanner.c"
+#line 5908 "Zend/zend_language_scanner.c"
 yy619:
                YYDEBUG(619, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5960,7 +5998,7 @@ yy628:
                {
        return T_CONTINUE;
 }
-#line 5964 "Zend/zend_language_scanner.c"
+#line 6002 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                ++YYCURSOR;
@@ -5973,7 +6011,7 @@ yy630:
                {
        return T_CONST;
 }
-#line 5977 "Zend/zend_language_scanner.c"
+#line 6015 "Zend/zend_language_scanner.c"
 yy632:
                YYDEBUG(632, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6002,7 +6040,7 @@ yy635:
                {
        return T_CLONE;
 }
-#line 6006 "Zend/zend_language_scanner.c"
+#line 6044 "Zend/zend_language_scanner.c"
 yy637:
                YYDEBUG(637, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6020,7 +6058,7 @@ yy638:
                {
        return T_CLASS;
 }
-#line 6024 "Zend/zend_language_scanner.c"
+#line 6062 "Zend/zend_language_scanner.c"
 yy640:
                YYDEBUG(640, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6070,7 +6108,7 @@ yy647:
                {
  return T_CALLABLE;
 }
-#line 6074 "Zend/zend_language_scanner.c"
+#line 6112 "Zend/zend_language_scanner.c"
 yy649:
                YYDEBUG(649, *YYCURSOR);
                ++YYCURSOR;
@@ -6083,7 +6121,7 @@ yy649:
                {
        return T_CASE;
 }
-#line 6087 "Zend/zend_language_scanner.c"
+#line 6125 "Zend/zend_language_scanner.c"
 yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6101,7 +6139,7 @@ yy652:
                {
        return T_CATCH;
 }
-#line 6105 "Zend/zend_language_scanner.c"
+#line 6143 "Zend/zend_language_scanner.c"
 yy654:
                YYDEBUG(654, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6156,7 +6194,7 @@ yy662:
                {
        return T_FUNCTION;
 }
-#line 6160 "Zend/zend_language_scanner.c"
+#line 6198 "Zend/zend_language_scanner.c"
 yy664:
                YYDEBUG(664, *YYCURSOR);
                ++YYCURSOR;
@@ -6184,7 +6222,7 @@ yy665:
                {
        return T_FOR;
 }
-#line 6188 "Zend/zend_language_scanner.c"
+#line 6226 "Zend/zend_language_scanner.c"
 yy666:
                YYDEBUG(666, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6212,7 +6250,7 @@ yy669:
                {
        return T_FOREACH;
 }
-#line 6216 "Zend/zend_language_scanner.c"
+#line 6254 "Zend/zend_language_scanner.c"
 yy671:
                YYDEBUG(671, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6250,7 +6288,7 @@ yy674:
                {
        return T_FINAL;
 }
-#line 6254 "Zend/zend_language_scanner.c"
+#line 6292 "Zend/zend_language_scanner.c"
 yy675:
                YYDEBUG(675, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6268,7 +6306,7 @@ yy676:
                {
        return T_FINALLY;
 }
-#line 6272 "Zend/zend_language_scanner.c"
+#line 6310 "Zend/zend_language_scanner.c"
 yy678:
                YYDEBUG(678, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6303,7 +6341,7 @@ yy680:
                {
        return T_DO;
 }
-#line 6307 "Zend/zend_language_scanner.c"
+#line 6345 "Zend/zend_language_scanner.c"
 yy682:
                YYDEBUG(682, *YYCURSOR);
                ++YYCURSOR;
@@ -6316,7 +6354,7 @@ yy682:
                {
        return T_EXIT;
 }
-#line 6320 "Zend/zend_language_scanner.c"
+#line 6358 "Zend/zend_language_scanner.c"
 yy684:
                YYDEBUG(684, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6355,7 +6393,7 @@ yy689:
                {
        return T_DEFAULT;
 }
-#line 6359 "Zend/zend_language_scanner.c"
+#line 6397 "Zend/zend_language_scanner.c"
 yy691:
                YYDEBUG(691, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6383,7 +6421,7 @@ yy694:
                {
        return T_DECLARE;
 }
-#line 6387 "Zend/zend_language_scanner.c"
+#line 6425 "Zend/zend_language_scanner.c"
 yy696:
                YYDEBUG(696, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6467,7 +6505,7 @@ yy707:
                {
        return T_EXTENDS;
 }
-#line 6471 "Zend/zend_language_scanner.c"
+#line 6509 "Zend/zend_language_scanner.c"
 yy709:
                YYDEBUG(709, *YYCURSOR);
                ++YYCURSOR;
@@ -6480,7 +6518,7 @@ yy709:
                {
        return T_EXIT;
 }
-#line 6484 "Zend/zend_language_scanner.c"
+#line 6522 "Zend/zend_language_scanner.c"
 yy711:
                YYDEBUG(711, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6498,7 +6536,7 @@ yy712:
                {
        return T_EVAL;
 }
-#line 6502 "Zend/zend_language_scanner.c"
+#line 6540 "Zend/zend_language_scanner.c"
 yy714:
                YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6572,7 +6610,7 @@ yy723:
                {
        return T_ENDWHILE;
 }
-#line 6576 "Zend/zend_language_scanner.c"
+#line 6614 "Zend/zend_language_scanner.c"
 yy725:
                YYDEBUG(725, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6605,7 +6643,7 @@ yy729:
                {
        return T_ENDSWITCH;
 }
-#line 6609 "Zend/zend_language_scanner.c"
+#line 6647 "Zend/zend_language_scanner.c"
 yy731:
                YYDEBUG(731, *YYCURSOR);
                ++YYCURSOR;
@@ -6618,7 +6656,7 @@ yy731:
                {
        return T_ENDIF;
 }
-#line 6622 "Zend/zend_language_scanner.c"
+#line 6660 "Zend/zend_language_scanner.c"
 yy733:
                YYDEBUG(733, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6651,7 +6689,7 @@ yy735:
                {
        return T_ENDFOR;
 }
-#line 6655 "Zend/zend_language_scanner.c"
+#line 6693 "Zend/zend_language_scanner.c"
 yy736:
                YYDEBUG(736, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6679,7 +6717,7 @@ yy739:
                {
        return T_ENDFOREACH;
 }
-#line 6683 "Zend/zend_language_scanner.c"
+#line 6721 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6717,7 +6755,7 @@ yy746:
                {
        return T_ENDDECLARE;
 }
-#line 6721 "Zend/zend_language_scanner.c"
+#line 6759 "Zend/zend_language_scanner.c"
 yy748:
                YYDEBUG(748, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6740,7 +6778,7 @@ yy750:
                {
        return T_EMPTY;
 }
-#line 6744 "Zend/zend_language_scanner.c"
+#line 6782 "Zend/zend_language_scanner.c"
 yy752:
                YYDEBUG(752, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6773,7 +6811,7 @@ yy754:
                {
        return T_ELSE;
 }
-#line 6777 "Zend/zend_language_scanner.c"
+#line 6815 "Zend/zend_language_scanner.c"
 yy755:
                YYDEBUG(755, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6791,7 +6829,7 @@ yy756:
                {
        return T_ELSEIF;
 }
-#line 6795 "Zend/zend_language_scanner.c"
+#line 6833 "Zend/zend_language_scanner.c"
 yy758:
                YYDEBUG(758, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6809,44 +6847,44 @@ yy759:
                {
        return T_ECHO;
 }
-#line 6813 "Zend/zend_language_scanner.c"
+#line 6851 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0, 128, 128,   0,   0, 128,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       128,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,   0,   0,   0,   0,   0,   0,
-                         0,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,   0,   0,   0,   0,  64,
-                         0,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,   0,   0,   0,   0,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
-                        64,  64,  64,  64,  64,  64,  64,  64,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128,   0,   0, 128,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       128,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,   0,   0,   0,   0,   0,   0, 
+                         0,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,   0,   0,   0,   0,  64, 
+                         0,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,   0,   0,   0,   0,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
+                        64,  64,  64,  64,  64,  64,  64,  64, 
                };
                YYDEBUG(761, *YYCURSOR);
                YYFILL(2);
@@ -6887,7 +6925,7 @@ yy764:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 6891 "Zend/zend_language_scanner.c"
+#line 6929 "Zend/zend_language_scanner.c"
 yy765:
                YYDEBUG(765, *YYCURSOR);
                ++YYCURSOR;
@@ -6901,7 +6939,7 @@ yy766:
        yy_pop_state();
        goto restart;
 }
-#line 6905 "Zend/zend_language_scanner.c"
+#line 6943 "Zend/zend_language_scanner.c"
 yy767:
                YYDEBUG(767, *YYCURSOR);
                ++YYCURSOR;
@@ -6916,7 +6954,7 @@ yy768:
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 6920 "Zend/zend_language_scanner.c"
+#line 6958 "Zend/zend_language_scanner.c"
 yy769:
                YYDEBUG(769, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6941,7 +6979,7 @@ yy772:
                {
        return T_OBJECT_OPERATOR;
 }
-#line 6945 "Zend/zend_language_scanner.c"
+#line 6983 "Zend/zend_language_scanner.c"
 yy774:
                YYDEBUG(774, *YYCURSOR);
                ++YYCURSOR;
@@ -6958,38 +6996,38 @@ yy775:
 yyc_ST_LOOKING_FOR_VARNAME:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128,   0,   0,   0,   0,   0,   0,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                         0, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128,   0,   0,   0,   0, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
-                       128, 128, 128, 128, 128, 128, 128, 128,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
                };
                YYDEBUG(776, *YYCURSOR);
                YYFILL(2);
@@ -7033,7 +7071,7 @@ yy779:
        yy_push_state(ST_IN_SCRIPTING);
        goto restart;
 }
-#line 7037 "Zend/zend_language_scanner.c"
+#line 7075 "Zend/zend_language_scanner.c"
 yy780:
                YYDEBUG(780, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7048,8 +7086,10 @@ yy782:
                if (yybm[0+yych] & 128) {
                        goto yy781;
                }
-               if (yych == '[') goto yy784;
+               if (yych <= '@') goto yy783;
+               if (yych <= '[') goto yy784;
                if (yych == '}') goto yy784;
+yy783:
                YYDEBUG(783, *YYCURSOR);
                YYCURSOR = YYMARKER;
                goto yy779;
@@ -7066,7 +7106,7 @@ yy784:
        yy_push_state(ST_IN_SCRIPTING);
        return T_STRING_VARNAME;
 }
-#line 7070 "Zend/zend_language_scanner.c"
+#line 7110 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -7077,7 +7117,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(789, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2238 "Zend/zend_language_scanner.l"
+#line 2280 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7133,43 +7173,43 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7137 "Zend/zend_language_scanner.c"
+#line 7177 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
                static const unsigned char yybm[] = {
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                         0,   0,   0,   0,   0,   0,   0,   0,
-                       240, 240, 112, 112, 112, 112, 112, 112,
-                       112, 112,   0,   0,   0,   0,   0,   0,
-                         0,  80,  80,  80,  80,  80,  80,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,   0,   0,   0,   0,  16,
-                         0,  80,  80,  80,  80,  80,  80,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,   0,   0,   0,   0,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
-                        16,  16,  16,  16,  16,  16,  16,  16,
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                         0,   0,   0,   0,   0,   0,   0,   0, 
+                       240, 240, 112, 112, 112, 112, 112, 112, 
+                       112, 112,   0,   0,   0,   0,   0,   0, 
+                         0,  80,  80,  80,  80,  80,  80,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,   0,   0,   0,   0,  16, 
+                         0,  80,  80,  80,  80,  80,  80,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,   0,   0,   0,   0,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
                };
                YYDEBUG(790, *YYCURSOR);
                YYFILL(3);
@@ -7240,16 +7280,23 @@ yy792:
 yy793:
                YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1638 "Zend/zend_language_scanner.l"
+#line 1669 "Zend/zend_language_scanner.l"
                { /* Offset could be treated as a long */
        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 10));
+               char *end;
+               errno = 0;
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
+               if (errno == ERANGE) {
+                       goto string;
+               }
+               ZEND_ASSERT(end == yytext + yyleng);
        } else {
+string:
                ZVAL_STRINGL(zendlval, yytext, yyleng);
        }
        return T_NUM_STRING;
 }
-#line 7253 "Zend/zend_language_scanner.c"
+#line 7300 "Zend/zend_language_scanner.c"
 yy794:
                YYDEBUG(794, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7269,23 +7316,23 @@ yy795:
 yy796:
                YYDEBUG(796, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1787 "Zend/zend_language_scanner.l"
+#line 1829 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7278 "Zend/zend_language_scanner.c"
+#line 7325 "Zend/zend_language_scanner.c"
 yy797:
                YYDEBUG(797, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(798, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1782 "Zend/zend_language_scanner.l"
+#line 1824 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        return ']';
 }
-#line 7289 "Zend/zend_language_scanner.c"
+#line 7336 "Zend/zend_language_scanner.c"
 yy799:
                YYDEBUG(799, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7295,7 +7342,7 @@ yy800:
                ++YYCURSOR;
                YYDEBUG(801, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1834 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
@@ -7303,7 +7350,7 @@ yy800:
        ZVAL_NULL(zendlval);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7307 "Zend/zend_language_scanner.c"
+#line 7354 "Zend/zend_language_scanner.c"
 yy802:
                YYDEBUG(802, *YYCURSOR);
                ++YYCURSOR;
@@ -7312,18 +7359,18 @@ yy802:
 yy803:
                YYDEBUG(803, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1800 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7321 "Zend/zend_language_scanner.c"
+#line 7368 "Zend/zend_language_scanner.c"
 yy804:
                YYDEBUG(804, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(805, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2295 "Zend/zend_language_scanner.l"
+#line 2337 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7332,7 +7379,7 @@ yy804:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7336 "Zend/zend_language_scanner.c"
+#line 7383 "Zend/zend_language_scanner.c"
 yy806:
                YYDEBUG(806, *YYCURSOR);
                ++YYCURSOR;
@@ -7368,12 +7415,12 @@ yy808:
 yy810:
                YYDEBUG(810, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 7377 "Zend/zend_language_scanner.c"
+#line 7424 "Zend/zend_language_scanner.c"
 yy811:
                YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
@@ -7413,12 +7460,12 @@ yy816:
 yy818:
                YYDEBUG(818, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1647 "Zend/zend_language_scanner.l"
+#line 1685 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        return T_NUM_STRING;
 }
-#line 7422 "Zend/zend_language_scanner.c"
+#line 7469 "Zend/zend_language_scanner.c"
 yy819:
                YYDEBUG(819, *YYCURSOR);
                ++YYCURSOR;
@@ -7441,6 +7488,6 @@ yy821:
                goto yy818;
        }
 }
-#line 2304 "Zend/zend_language_scanner.l"
+#line 2346 "Zend/zend_language_scanner.l"
 
 }
index 938bc4e7d773da1eb12d739783652d6897b1b30b..2412631d9150a9f53214ee2a5880e51079a3a942 100644 (file)
@@ -1574,6 +1574,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
 <ST_IN_SCRIPTING>{BNUM} {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
+       char *end;
 
        /* Skip any leading 0s */
        while (*bin == '0') {
@@ -1585,29 +1586,54 @@ NEWLINE ("\r"|"\n"|"\r\n")
                if (len == 0) {
                        ZVAL_LONG(zendlval, 0);
                } else {
-                       ZVAL_LONG(zendlval, ZEND_STRTOL(bin, NULL, 2));
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
+                       ZEND_ASSERT(!errno && end == yytext + yyleng);
                }
                return T_LNUMBER;
        } else {
-               ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));
+               ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, &end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == yytext + yyleng);
                return T_DNUMBER;
        }
 }
 
 <ST_IN_SCRIPTING>{LNUM} {
+       char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+               errno = 0;
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
+               /* This isn't an assert, we need to ensure 019 isn't valid octal
+                * Because the lexing itself doesn't do that for us
+                */
+               if (end != yytext + yyleng) {
+                       zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+               }
+               ZEND_ASSERT(!errno);
        } else {
                errno = 0;
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
                if (errno == ERANGE) { /* Overflow */
+                       errno = 0;
                        if (yytext[0] == '0') { /* octal overflow */
-                               ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, NULL));
+                               errno = 0;
+                               ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, &end));
                        } else {
-                               ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+                               ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+                       }
+                       /* Also not an assert for the same reason */
+                       if (end != yytext + yyleng) {
+                               zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
                        }
+                       ZEND_ASSERT(!errno);
                        return T_DNUMBER;
                }
+               /* Also not an assert for the same reason */
+               if (end != yytext + yyleng) {
+                       zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+               }
+               ZEND_ASSERT(!errno);
        }
        return T_LNUMBER;
 }
@@ -1615,6 +1641,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
 <ST_IN_SCRIPTING>{HNUM} {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
+       char *end;
 
        /* Skip any leading 0s */
        while (*hex == '0') {
@@ -1626,19 +1653,30 @@ NEWLINE ("\r"|"\n"|"\r\n")
                if (len == 0) {
                        ZVAL_LONG(zendlval, 0);
                } else {
-                       ZVAL_LONG(zendlval, ZEND_STRTOL(hex, NULL, 16));
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
+                       ZEND_ASSERT(!errno && end == hex + len);
                }
                return T_LNUMBER;
        } else {
-               ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));
+               ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, &end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == hex + len);
                return T_DNUMBER;
        }
 }
 
 <ST_VAR_OFFSET>[0]|([1-9][0-9]*) { /* Offset could be treated as a long */
        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
-               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 10));
+               char *end;
+               errno = 0;
+               ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
+               if (errno == ERANGE) {
+                       goto string;
+               }
+               ZEND_ASSERT(end == yytext + yyleng);
        } else {
+string:
                ZVAL_STRINGL(zendlval, yytext, yyleng);
        }
        return T_NUM_STRING;
@@ -1650,7 +1688,11 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 <ST_IN_SCRIPTING>{DNUM}|{EXPONENT_DNUM} {
-       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+       char *end;
+
+       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+       /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+       ZEND_ASSERT(end == yytext + yyleng);
        return T_DNUMBER;
 }
 
index 1118239c8d276776a9ab31dfbf5869700d9b40f1..baf859bcd461af589b453b8423364170b2777c89 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.6 */
+/* Generated by re2c 0.13.7.5 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
index 72b6c55cf36f20bc814b8edbb9ca56d84ee3fd83..74dada0aa0ade53a4af8066598f8c30f29b328fc 100644 (file)
@@ -30,7 +30,7 @@ $asso_arrays = array(
 /*3*/  array(0xabc => 2748, 0x12f => '303', 0xff => "255", -0xff => "-255"),
 
        // array with octal values as keys 
-       array(0123 => 83, 0129 => 10, 010 => "8", -0348 => "-28", 0012 => '10'),
+       array(0123 => 83, 012 => 10, 010 => "8", -034 => "-28", 0012 => '10'),
 
        // array with bool values as keys
        array(TRUE => '1', true => true, TrUe => "TRUE",
index 69dded96d91a92adc3c875630b224a68a7a22733..44f5cd857344506894cf3914a3388f7cd61866be 100644 (file)
@@ -20,7 +20,7 @@ $input = array(
   1 => 'one', 2.2 => 'float key', 0.9 => 'decimal key',
   2e2 => 'exp key1', 2000e-3 => 'negative exp key',
   0xabc => 2748, 0x12f => '303', 0xff => "255",
-  0123 => 83, 0129 => 10, 010 => "8"
+  0123 => 83, 012 => 10, 010 => "8"
 );
        
 // Testing array_rand() function with various invalid 'req_num' values
index a697a15fc67541b28135d4b1f7aee64a95c25d94..56d91314930718c0e89bb2545f81d658ec016555 100644 (file)
@@ -20,7 +20,7 @@ echo "-- Sum of Integer array --\n";
 var_dump( array_sum($int_values) );
 
 // Octal array
-$octal_values = array(056, 023, 090, 015, -045, 01, -078);
+$octal_values = array(056, 023, 00, 015, -045, 01, -07);
 echo "-- Sum of Octal array --\n";
 var_dump( array_sum($octal_values) );
 
index ad8e6685bc1afc982544297268f3742c13ec4a92..1cb4e4d1eb56517dd0b2d0e8f3e1551ad4627dec 100644 (file)
@@ -41,10 +41,10 @@ $array_arg = array(
        array(-0x123, -0xabc, -0xABC, -0xAb1, -0x9fa),
 
        // array with positive octal values
-/*9*/  array(0123, 02348, 034, 00),
+/*9*/  array(0123, 0234, 034, 00),
 
        // array with negative octal values
-/*10*/ array(-0123, -02348, -034),
+/*10*/ array(-0123, -0234, -034),
 
 );
 
index 516e7c95036784d77dbbc657ba1a580e509b4d9a..399197c19b0c97fdb74cb3eb90ac43b950adb15e 100644 (file)
@@ -41,10 +41,10 @@ $array_arg = array(
        array(NULL => -0x123, "NULL" => -0xabc, "-ABC" => -0xABC, -0xAB1 => -0xAb1),
 
        // array with positive octal values
-/*9*/  array(0123 => 0123, "02348" => 02348, '034' => 034, 00 => 00),
+/*9*/  array(0123 => 0123, "0234" => 0234, '034' => 034, 00 => 00),
 
        // array with negative octal values
-       array(-0123 => -0123, "-02348" => -02348, '-034' => -034),
+       array(-0123 => -0123, "-0234" => -0234, '-034' => -034),
 
        // array with null values
 /*11*/ array(NULL => NULL, "null" => NULL, "NULL" => NULL)
index 0ed797fb872069065bb51341a45a15b2165d686a..8f0a2db0775cc997c6709bb2270e0881d3bf215b 100644 (file)
@@ -42,7 +42,7 @@ var_dump( uasort($int_values, 'cmp_function') );  // expecting: bool(true)
 var_dump($int_values);
 
 // Octal array
-$octal_values = array(0 => 056, 1 => 023, 2 => 090, 3 => 015, 4 => -045, 5 => 01, 6 => -078);
+$octal_values = array(0 => 056, 1 => 023, 2 => 00, 3 => 015, 4 => -045, 5 => 01, 6 => -07);
 echo "-- Sorting Octal array --\n";
 var_dump( uasort($octal_values, 'cmp_function') );  // expecting: bool(true)
 var_dump($octal_values);
index 4de45cc6160d2d9d55e5548189cd6fad77157c00..36624b7c3c7abc049fc97be6e0f8f2b8bf9203ef 100644 (file)
@@ -36,8 +36,8 @@ var_dump( usort($int_values, 'cmp_function') );
 var_dump($int_values);
 
 // Octal array
-$octal_values = array(0 => 056, 1 => 023,  2 => 090, 
-                      3 => 015, 4 => -045, 5 => 01,  6 => -078);
+$octal_values = array(0 => 056, 1 => 023,  2 => 00, 
+                      3 => 015, 4 => -045, 5 => 01,  6 => -07);
 
 echo "\n-- Sorting Octal array --\n";
 var_dump( usort($octal_values, 'cmp_function') );
index bdd444d0e5685185678d0cb5efbff7788dcf3464..e80606a3fc9768952a9c683a05bfe4fca46d46aa 100644 (file)
@@ -38,7 +38,7 @@ $integer_values = array (
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 8179aee78e8ca856d94ea5dd8d04595d7aece063..55978b95e6774bcf4c3288f1247c5404528961b8 100644 (file)
@@ -37,7 +37,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 3c176773edef6a7b0d0cb888da32ac0f771741b3..cb34edd23cd8b0718bb904f8faf1fb3e95b5d126 100644 (file)
@@ -37,7 +37,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 04f2dd5a621335dc406906fca12ffa55f410114c..137471e248cb462b7ce8be0da35c8bf9e6949e00 100644 (file)
@@ -37,7 +37,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index cfd1fe2c4fa96ebd7d34573197f6487595fa4b6d..9186e62f8e4bc161bfc083c6b83c7391383cd29b 100644 (file)
@@ -37,7 +37,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 6f7f5162cd8d43d531f78cf8fd52054c7f2f97a6..cecfa700e39b359fc5c797c4aee36781433e4e94 100644 (file)
@@ -30,7 +30,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777,  // max positive integer as octal
 );
index e6edffdb14814b30acbd08314b285ac55412b1a3..9857c94223be62546d0b40c443696c80c0821691 100644 (file)
@@ -60,7 +60,7 @@ $numerics = array(
   +0x6698319,
   01000000000000000000000, 
   0123,
-  0345900,
+  0345,
   -0200001,  
   -0200001.7,  
   0200001.7,  
index 89f5c591e8c9d4ba613b98be96f4c8ccfcfa58b5..2e1e81c2ee5c61224d3aed552e22e0b605a0426e 100644 (file)
@@ -46,7 +46,7 @@ $scalars = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777,  // max positive integer as octal
   -2147483649, // float value
index b4d122e7b374264d7a12b4449cf6cc4fef3c40a1..76a18ac3a7d68a0ff39b4bbd511eed25c17f5c19 100644 (file)
@@ -34,7 +34,7 @@ $valid_ints = array(
                 '0x7fffffff',  // max positive integer as hexadecimal
                 0x7FFFFFFF,  // max positive integer as hexadecimal
                 '0123',        // integer as octal
-                01912,       // should be quivalent to octal 1
+                01,       // should be quivalent to octal 1
                 -020000000000, // max negative integer as octal
                 017777777777,  // max positive integer as octal
                );
index 8a23fe341b3dbf5a19dd445d0a783608606bfeca..cba04b85076476b0b5ad4fa1b576c301b3730a41 100644 (file)
@@ -26,7 +26,7 @@ $valid_ints = array(
                 "'0x7fffffff'" => '0x7fffffff',  // max positive integer as hexadecimal
                 "0x7FFFFFFF" => 0x7FFFFFFF,  // max positive integer as hexadecimal
                 "'0123'" => '0123',        // integer as octal
-                "01912" => 01912,       // should be quivalent to octal 1
+                "01912" => 01,       // should be quivalent to octal 1
                 "-020000000000" => -020000000000, // max negative integer as octal
                 "017777777777" => 017777777777,  // max positive integer as octal
 );
index 327f47c75ae0b525b7660c31f17417cf7a1a5c1c..69a2667a24a8095c86553f6a756dc35f685ee2d6 100644 (file)
@@ -8,7 +8,7 @@ $tobase = array(2,8,10,16,36);
 $values = array(10,
                                27,
                                39,
-                               039,
+                               03,
                                0x5F,   
                                "10",
                                "27",
@@ -313,4 +313,4 @@ for ($f= 0; $f < count($frombase); $f++) {
 .........value= 27 res = 27
 .........value= 39 res = 39
 .........value= 5F res = 5f
-.........value= 3XYZ res = 3xyz
\ No newline at end of file
+.........value= 3XYZ res = 3xyz
index e6fc5dc30de9258aad3eb80fbc146d9ddb84bfe0..b4389956f42699bf98d5f44ec235e71ca70bed65 100644 (file)
@@ -5,7 +5,7 @@ Test decbin() - basic function test
 $values = array(10,
                                3950.5,
                                3.9505e3,
-                               039,
+                               03,
                                0x5F,   
                                "10",
                                "3950.5",
@@ -36,4 +36,4 @@ string(6) "100111"
 string(1) "0"
 string(1) "1"
 string(1) "0"
-string(1) "0"
\ No newline at end of file
+string(1) "0"
index cba4aa632e861eedb3552f14de1d6e70e300fce9..2423d8e748fb53672e1721092d98d5442471dfd3 100644 (file)
@@ -5,7 +5,7 @@ Test dechex() - basic function dechex()
 $values = array(10,
                                3950.5,
                                3.9505e3,
-                               039,
+                               03,
                                0x5F,   
                                "10",
                                "3950.5",
@@ -35,4 +35,4 @@ string(2) "27"
 string(1) "0"
 string(1) "1"
 string(1) "0"
-string(1) "0"
\ No newline at end of file
+string(1) "0"
index 3021e6be1df14eea02fe5dbf5f616395140923ba..cc1f0a899ac7bdc6959d5ecc14bffbb711c2b1cf 100644 (file)
@@ -5,7 +5,7 @@ Test decoct() - basic function test decoct()
 $values = array(10,
                                3950.5,
                                3.9505e3,
-                               039,
+                               03,
                                0x5F,   
                                "10",
                                "3950.5",
index 734729e63d70590e2e12e25c3aef92816a793073..8efd0add8f32ee50d537c968e63d27a475a57ef4 100644 (file)
@@ -17,7 +17,7 @@ var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9H
 var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 10, 'foo' => 3)));
 
 // Invalid, different (lower) cost
-var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 09)));
+var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 0)));
 
 // Invalid, different (higher) cost
 var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 11)));
index bb9ecd1a66246256a3ec2843116a6c58a075f48c..925689939c858db85a15cd07e02bef97d56c9c62 100644 (file)
@@ -22,7 +22,7 @@ $format2 = "%o %o";
 $format3 = "%o %o %o";
 $arg1 = 021;
 $arg2 = -0347;
-$arg3 = 05678;
+$arg3 = 0567;
 
 // Calling sprintf() with default arguments
 var_dump( sprintf($format) );
index 76d8f05eac035cc8b3a9d36181faad0affa5684d..9c7e1e6535969c44a03f27f77e3c64b161be1db4 100644 (file)
@@ -18,7 +18,7 @@ $format2 = "%o %o";
 $format3 = "%o %o %o";
 $arg1 = 021;
 $arg2 = -0347;
-$arg3 = 05678;
+$arg3 = 0567;
 
 // Calling sprintf() with default arguments
 var_dump( sprintf($format) );
index e989d9f8b856db41386efbae7da3637aa8625e1d..3880b212df346590d714e139cc68245e0938b31f 100644 (file)
@@ -26,7 +26,7 @@ $integer_values = array (
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
@@ -324,4 +324,4 @@ string(17) "2147483647.000000"
 string(30) "             2147483647.000000"
 string(4) "0-9]"
 string(1) "f"
-Done
\ No newline at end of file
+Done
index 542ba52aa327180fff4456bc2c0e2ceea0b4a422..fb3f90585e9dc8708044421d5892d49978e0800c 100644 (file)
@@ -26,7 +26,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
@@ -323,4 +323,4 @@ string(10) "2147483647"
 string(30) "                    2147483647"
 string(10) "a-zA-Z0-9]"
 string(1) "s"
-Done
\ No newline at end of file
+Done
index cbbf16e066aa0bdd0c9c44526c81b5899d771d65..20aa1e9d58685a3f809dd5ffebd9451e238cabe7 100644 (file)
Binary files a/ext/standard/tests/strings/sprintf_variation21.phpt and b/ext/standard/tests/strings/sprintf_variation21.phpt differ
index 40af96f96015481984aa715ca91abbfa02549194..e295fc81814dfd6dabdf7e220f8f86246a715bfe 100644 (file)
@@ -32,7 +32,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 92fdf78da1c75a4e2a89c4786f3480b0d41e3eeb..f4d8125e9815a082a302ad8be59c67d6da87e644 100644 (file)
@@ -28,7 +28,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
index 0435cf3d77542e39b96c2c76081a068f9e213bf2..6c0577e4d4d3612635f9940b1722ddaf67b15385 100644 (file)
@@ -26,7 +26,7 @@ $valid_ints = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal
   017777777777  // max positive integer as octal
 );
@@ -322,4 +322,4 @@ string(10) "2147483647"
 string(30) "                    2147483647"
 string(4) "0-9]"
 string(1) "d"
-Done
\ No newline at end of file
+Done
index 8a5cd809d661fc871838cbd99cdd47dd42d24c9b..db905ebd18d693f20583a586c9d9a13296126e98 100644 (file)
@@ -32,7 +32,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal 
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal 
   017777777777  // max positive integer as octal
 );
index 27e3f0c73eb06272cfd9ebbeeccafb044be9e1dd..a4914664a27a25d37f191a68c0ea7474ad152f5f 100644 (file)
@@ -28,7 +28,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal 
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal 
   017777777777  // max positive integer as octal
 );
index 6efcee060818d958b8e4e5146c6943f3da39d034..774650a32c43717313ef6a99eee1b5a9f7a1287c 100644 (file)
@@ -32,7 +32,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal 
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal 
   017777777777  // max positive integer as octal
 );
index 029e94c782105a4763637525251b19320470b3f6..fffe6155fe4346b4d5259f5b36525b49db0c6301 100644 (file)
@@ -28,7 +28,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal 
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal 
   017777777777  // max positive integer as octal
 );
index 311d8c192a88c86907e03293b355f5bd36e57fea..9b8892d7d039a460e732e34c2ae50e4636ea6652 100644 (file)
@@ -26,7 +26,7 @@ $integer_values = array(
   0x7fffffff,  // max positive integer as hexadecimal
   0x7FFFFFFF,  // max positive integer as hexadecimal
   0123,        // integer as octal 
-  01912,       // should be quivalent to octal 1
+  01,       // should be quivalent to octal 1
   -020000000000, // max negative integer as octal 
   017777777777  // max positive integer as octal
 );
@@ -323,4 +323,4 @@ string(11) "2.147484e+9"
 string(30) "                   2.147484e+9"
 string(4) "0-1]"
 string(1) "e"
-Done
\ No newline at end of file
+Done
index bf7eb96ad5810be06c599d0b269f69626824b4e4..aad883c6e99260c8a657fb5e8562d3bf6e5d3e2f 100644 (file)
@@ -16,7 +16,7 @@ $format2 = "%o %o";
 $format3 = "%o %o %o";
 $arg1 = array(021);
 $arg2 = array(021,0347);
-$arg3 = array(021,0347,05678);
+$arg3 = array(021,0347,0567);
 
 /* creating dumping file */
 $data_file = dirname(__FILE__) . '/vfprintf_basic8.txt';
index 4bc38851d271ee95424d5a4c70627f24c150a229..e94e7e0c56937131b0ed1ad277d2257ecc5ce05f 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index a55297999ee45e0fb5d50b71e17126bf71a8ad52..ab3e1ce83f0b83dd6156e777bea24a2002a84e27 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index fd3424242458bf4ad2a9ecc93ef6cf8e74212a7b..ebb45acb6b1e223bca2459184cb02c1db2a74c43 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index 68baed853745e007e884b6dedb708a8b4019375a..34089e2b782e8d0548e2115279629291fd9c71d9 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index 26c21e1e3c0c3d8dc269f9880643e6f6147cb241..b2fbdd88cf7c27ba949b83d5b6ccaae26e951298 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index a56357cfdf58dbb49b3d3fbedc003c32b29a6385..8153ce812979e0d2175b9253d53270718243059d 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index 1ae945990cc82bce3afa1a4f92dbd3b59653657d..99db0bf00b3e9f685ed57403420a7326897ed433 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483647, -2147483648, +2147483640, -2147483640),
   array(123456, 12345678, -1234567, 1234567),
   array(111, 2222, 333333, 44444444),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234, -5678, 2345),
   array(3, 4, 1, 2)
 
index eb3646ca1f3af111983c115f76fb288b9ffb6380..9845a3ff2caebc1c9bd6caba3da6760b75b9db92 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483649, -2147483647, +2147483640, -2147483640),
   array(2e5, 2e-5, -2e5, -2e-5),
   array(0.2E5, -0.2e40, 0.2E-20, 0.2E+20),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234.1234, -5678.5678, 2345.2345),
   array(3.33, 4.44, 1.11, 2.22)
 
index dd3093c8c9e981b6494d2e7e8cdd2fc534b0a494..8481b41adebb03092c4285db57a779f9b2f3bfbb 100644 (file)
Binary files a/ext/standard/tests/strings/vfprintf_variation9.phpt and b/ext/standard/tests/strings/vfprintf_variation9.phpt differ
index 91c6dd782deacc543b405133a36a2bf53cb988b9..d5f6e222d0ef891caa6d3d64079e69e19af4fe54 100644 (file)
@@ -16,7 +16,7 @@ $format2 = "%o %o";
 $format3 = "%o %o %o";
 $arg1 = array(021);
 $arg2 = array(021,0347);
-$arg3 = array(021,0347,05678);
+$arg3 = array(021,0347,0567);
 
 $result = vprintf($format1,$arg1);
 echo "\n";
index f803e96c83b3cd5926c268dfe8b060371e3bd08d..4207bc294e8ec41fe08df7cc12bd18dbb46c986f 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index 5f65c5fb442c3f155455ecc10416794e108c0770..039006fdc683591a38f28338def8b0c543b42dc1 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index 6b629c851d475fe3e48875b5819a36c37d52527a..240db721e8a088491b70fefc0bb29dcfb2a22fc2 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index 8cf768b776e54da7435f85c759bb400cf0b9e2c5..06d2bec26dfcc2275eb8b3b2b7ac1e38e1c28373 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index a9288a163493fc80dd721b321f24ede0564b4bb0..8b826d8e94cb8faa3a568b56eb5043b355fc0317 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index d98199624fa525e8b506b6a7066c827a7e08f6d0..6abc13454930e752b76849b2b8723468f23d97c0 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index 41c76487c8eaf5ba48e17bca17fcc1960865dc46..0b59ddda1f07b1d2f03115f1e22e8779161b19f8 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483647, -2147483648, +2147483640, -2147483640),
   array(123456, 12345678, -1234567, 1234567),
   array(111, 2222, 333333, 44444444),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234, -5678, 2345),
   array(3, 4, 1, 2)
 
index 6388f284c628583c28e093ce1b16842fcef709eb..f54d1e19c5ff864e99cbdacbb1187d16a02d935d 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483649, -2147483647, +2147483640, -2147483640),
   array(2e5, 2e-5, -2e5, -2e-5),
   array(0.2E5, -0.2e40, 0.2E-20, 0.2E+20),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234.1234, -5678.5678, 2345.2345),
   array(3.33, 4.44, 1.11, 2.22)
 
index a7b513f633c5e27fa2e3bc135e00474b1f35f898..5ad2db2afa04dbde0284df4dd08b258263563b57 100644 (file)
Binary files a/ext/standard/tests/strings/vprintf_variation9.phpt and b/ext/standard/tests/strings/vprintf_variation9.phpt differ
index 59f17b65071e76290f5a5ea6685677f452f33e4a..cd2929e00707fdfd87b2390460bfc716054d4944 100644 (file)
@@ -16,7 +16,7 @@ $format2 = "%o %o";
 $format3 = "%o %o %o";
 $arg1 = array(021);
 $arg2 = array(021,0347);
-$arg3 = array(021,0347,05678);
+$arg3 = array(021,0347,0567);
 
 var_dump( vsprintf($format1,$arg1) );
 var_dump( vsprintf($format2,$arg2) );
index e7fe663c4e8c49c893d016255056ffd38a48650e..4cc5b029229f60567d4761a9d132f1d4e09a8cbc 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index 61327c84bab3da5dd0a589b055f5614c89292139..841d104b817d0da0aa6864eb0b999ce8a7835948 100644 (file)
@@ -36,10 +36,10 @@ $args_array = array(
   array(00),
   array(-01, 01, +022),
   array(-020000000000, 020000000000, 017777777777, -017777777777),
-  array(0123456, 012345678, -01234567, 01234567),
+  array(0123456, 01234567, -01234567, 01234567),
   array(0111, 02222, -0333333, -044444444),
-  array(0x123b, 0xfAb, 0123, 01293),
-  array(01234, 05678, -01234, 02345),
+  array(0x123b, 0xfAb, 0123, 012),
+  array(01234, 0567, -01234, 02345),
   array(03, 04, 01, 02)
 
 );
index 3e89fa35087792b0a62bf1dfc1c18f3d45996c60..b617975759b9f4ed56eb5ddcd9615a7be63e6d6a 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index 749a4a858fb937e9e04d830c78fe6054018427b8..8d2533a8fc3e2ecc81a4cffef640da6baee03442 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
   array(123456, 12345678, -1234567, 1234567),
   array(1, 0x2222, 0333333, -0x44444444),
-  array(0x123b, 0xfAb, "0xaxz", 01293),
+  array(0x123b, 0xfAb, "0xaxz", 012),
   array(0x1234, 0x34, 0x2ff),
   array(0x3, 0x4, 0x1, 0x2)
 
index 4ad276a8800d3168aa3a72393c95a6f80e528aaf..8d475b75a38852ead3f5ecbb050adb696c3b0852 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index 6e805feb7f294c826f3d63cd77c4a3545e14f574..69145ba963df1b2742385f291a35b89247c7e415 100644 (file)
@@ -38,7 +38,7 @@ $args_array = array(
   array(65, 66, 67),
   array(2e1, 2e-1, -2e1),
   array(-11, +22, 33),
-  array(012, -02394, +02389),
+  array(012, -023, +023),
   array(0x11, -0x22, +0x33),
   array(0x11, -0x22, +0x33),
   array(2e1, 2e-1, -2e1)
index fff82c8032ce5285b32efea850b03db7482f723c..2932e15f185fc030b99f4a56cc0c9cfdf8376d93 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483647, -2147483648, +2147483640, -2147483640),
   array(123456, 12345678, -1234567, 1234567),
   array(111, 2222, 333333, 44444444),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234, -5678, 2345),
   array(3, 4, 1, 2)
 
index dd356fbbe020c5195bcbc5d0780da7eb54b3947f..b2bd0d5b7951f5848a1344470e65186da283ed4e 100644 (file)
@@ -35,7 +35,7 @@ $args_array = array(
   array(2147483649, -2147483647, +2147483640, -2147483640),
   array(2e5, 2e-5, -2e5, -2e-5),
   array(0.2E5, -0.2e40, 0.2E-20, 0.2E+20),
-  array(0x123b, 0xfAb, 0123, 01293),
+  array(0x123b, 0xfAb, 0123, 012),
   array(1234.1234, -5678.5678, 2345.2345),
   array(3.33, 4.44, 1.11, 2.22)
 
index 2d466373915e9bdc56c452344539c5533277c013..c16531b2f5cb54a737ce9510bbe290c1834af476 100644 (file)
Binary files a/ext/standard/tests/strings/vsprintf_variation9.phpt and b/ext/standard/tests/strings/vsprintf_variation9.phpt differ
diff --git a/tests/lang/invalid_octal.phpt b/tests/lang/invalid_octal.phpt
new file mode 100644 (file)
index 0000000..dd10f1c
--- /dev/null
@@ -0,0 +1,8 @@
+--TEST--
+Invalid octal
+--FILE--
+<?php
+
+$x = 08;
+--EXPECTF--
+Fatal error: Invalid numeric literal in %s on line 3