com php-src: Error on invalid octal (fixes PHPSadness #31): NEWS UPGRADING Zend/zend_language_scanner.c Zend/zend_language_sca nner.l
Zend/zend_language_scanner_defs.h ext/stan dard/tests/array/array_rand_variation4.phpt ext/stand ard/tests/array/array_rand_variation5.phpt ext/standa
rd/tests/array/array_sum_variation2.phpt ext/standard /tests/array/shuffle_variation3.phpt ext/standard/tests /array/shuffle_variation4.phpt
ext/standard/tests/array /uasor
| From: | ajf@php.net | Date: | Sat, 17 Jan 2015 18:50:28 +0000 |
| Subject: | com php-src: Error on invalid octal (fixes PHPSadness #31): NEWS UPGRADING Zend/zend_language_scanner.c Zend/zend_language_sca nner.l Zend/zend_language_scanner_defs.h ext/stan dard/tests/array/array_rand_variation4.phpt ext/stand ard/tests/array/array_rand_variation5.phpt ext/standa rd/tests/array/array_sum_variation2.phpt ext/standard /tests/array/shuffle_variation3.phpt ext/standard/tests /array/shuffle_variation4.phpt ext/standard/tests/array /uasor |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-84149@lists.php.net to get a copy of this message | ||
Commit: 5f29b980514867f1a09969ca6a1c1f5fb00c3027
Author: Andrea Faulds <ajf@ajf.me> Fri, 9 Jan 2015 06:32:36 +0000
Parents: ca11bc0325496bef94d4417f300e323040fb11db
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=5f29b980514867f1a09969ca6a1c1f5fb00c3027
Log:
Error on invalid octal (fixes PHPSadness #31)
Further error checks
Bugs:
https://bugs.php.net/31
Changed paths:
M NEWS
M UPGRADING
M Zend/zend_language_scanner.c
M Zend/zend_language_scanner.l
M Zend/zend_language_scanner_defs..h
M ext/standard/tests/array/array_rand_variation4.phpt
M ext/standard/tests/array/array_rand_variation5.phpt
M ext/standard/tests/array/array_sum_variation2.phpt
M ext/standard/tests/array/shuffle_variation3.phpt
M ext/standard/tests/array/shuffle_variation4.phpt
M ext/standard/tests/array/uasort_variation4.phpt
M ext/standard/tests/array/usort_variation4.phpt
M ext/standard/tests/file/fscanf_variation18.phpt
M ext/standard/tests/file/fscanf_variation2.phpt
M ext/standard/tests/file/fscanf_variation20.phpt
M ext/standard/tests/file/fscanf_variation27.phpt
M ext/standard/tests/file/fscanf_variation45.phpt
M ext/standard/tests/general_functions/is_int_64bit.phpt
M ext/standard/tests/general_functions/is_numeric.phpt
M ext/standard/tests/general_functions/strval.phpt
M ext/standard/tests/general_functions/var_export-locale.phpt
M ext/standard/tests/general_functions/var_export_basic1.phpt
M ext/standard/tests/math/base_convert_basic.phpt
M ext/standard/tests/math/decbin_basic.phpt
M ext/standard/tests/math/dechex_basic.phpt
M ext/standard/tests/math/decoct_basic.phpt
M ext/standard/tests/password/password_needs_rehash.phpt
M ext/standard/tests/strings/sprintf_basic8.phpt
M ext/standard/tests/strings/sprintf_basic8_64bit.phpt
M ext/standard/tests/strings/sprintf_variation10.phpt
M ext/standard/tests/strings/sprintf_variation19.phpt
M ext/standard/tests/strings/sprintf_variation21.phpt
M ext/standard/tests/strings/sprintf_variation28.phpt
M ext/standard/tests/strings/sprintf_variation28_64bit.phpt
M ext/standard/tests/strings/sprintf_variation3.phpt
M ext/standard/tests/strings/sprintf_variation34.phpt
M ext/standard/tests/strings/sprintf_variation34_64bit.phpt
M ext/standard/tests/strings/sprintf_variation40.phpt
M ext/standard/tests/strings/sprintf_variation40_64bit.phpt
M ext/standard/tests/strings/sprintf_variation46.phpt
M ext/standard/tests/strings/vfprintf_basic8.phpt
M ext/standard/tests/strings/vfprintf_variation11.phpt
M ext/standard/tests/strings/vfprintf_variation11_64bit.phpt
M ext/standard/tests/strings/vfprintf_variation13.phpt
M ext/standard/tests/strings/vfprintf_variation13_64bit.phpt
M ext/standard/tests/strings/vfprintf_variation19.phpt
M ext/standard/tests/strings/vfprintf_variation19_64bit.phpt
M ext/standard/tests/strings/vfprintf_variation3.phpt
M ext/standard/tests/strings/vfprintf_variation5.phpt
M ext/standard/tests/strings/vfprintf_variation9.phpt
M ext/standard/tests/strings/vprintf_basic8.phpt
M ext/standard/tests/strings/vprintf_variation11.phpt
M ext/standard/tests/strings/vprintf_variation11_64bit.phpt
M ext/standard/tests/strings/vprintf_variation13.phpt
M ext/standard/tests/strings/vprintf_variation13_64bit.phpt
M ext/standard/tests/strings/vprintf_variation19.phpt
M ext/standard/tests/strings/vprintf_variation19_64bit.phpt
M ext/standard/tests/strings/vprintf_variation3.phpt
M ext/standard/tests/strings/vprintf_variation5.phpt
M ext/standard/tests/strings/vprintf_variation9.phpt
M ext/standard/tests/strings/vsprintf_basic8.phpt
M ext/standard/tests/strings/vsprintf_variation11.phpt
M ext/standard/tests/strings/vsprintf_variation11_64bit.phpt
M ext/standard/tests/strings/vsprintf_variation13.phpt
M ext/standard/tests/strings/vsprintf_variation13_64bit.phpt
M ext/standard/tests/strings/vsprintf_variation19.phpt
M ext/standard/tests/strings/vsprintf_variation19_64bit.phpt
M ext/standard/tests/strings/vsprintf_variation3.phpt
M ext/standard/tests/strings/vsprintf_variation5.phpt
M ext/standard/tests/strings/vsprintf_variation9.phpt
A tests/lang/invalid_octal.phpt
diff --git a/NEWS b/NEWS index 17b17c6..3f62bba 100644 --- 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 diff --git a/UPGRADING b/UPGRADING index e077053..3cab7cc 100644 --- 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(). diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index f9f2c4b..6ef1bf1 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -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" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 938bc4e..2412631 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -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; } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 1118239..baf859b 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -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 { diff --git a/ext/standard/tests/array/array_rand_variation4.phpt b/ext/standard/tests/array/array_rand_variation4.phpt index 72b6c55..74dada0 100644 --- a/ext/standard/tests/array/array_rand_variation4.phpt +++ b/ext/standard/tests/array/array_rand_variation4.phpt @@ -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", diff --git a/ext/standard/tests/array/array_rand_variation5.phpt b/ext/standard/tests/array/array_rand_variation5.phpt index 69dded9..44f5cd8 100644 --- a/ext/standard/tests/array/array_rand_variation5.phpt +++ b/ext/standard/tests/array/array_rand_variation5.phpt @@ -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 diff --git a/ext/standard/tests/array/array_sum_variation2.phpt b/ext/standard/tests/array/array_sum_variation2.phpt index a697a15..56d9131 100644 --- a/ext/standard/tests/array/array_sum_variation2.phpt +++ b/ext/standard/tests/array/array_sum_variation2.phpt @@ -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) ); diff --git a/ext/standard/tests/array/shuffle_variation3.phpt b/ext/standard/tests/array/shuffle_variation3.phpt index ad8e668..1cb4e4d 100644 --- a/ext/standard/tests/array/shuffle_variation3.phpt +++ b/ext/standard/tests/array/shuffle_variation3.phpt @@ -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), ); diff --git a/ext/standard/tests/array/shuffle_variation4.phpt b/ext/standard/tests/array/shuffle_variation4.phpt index 516e7c9..399197c 100644 --- a/ext/standard/tests/array/shuffle_variation4.phpt +++ b/ext/standard/tests/array/shuffle_variation4.phpt @@ -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) diff --git a/ext/standard/tests/array/uasort_variation4.phpt b/ext/standard/tests/array/uasort_variation4.phpt index 0ed797f..8f0a2db 100644 --- a/ext/standard/tests/array/uasort_variation4.phpt +++ b/ext/standard/tests/array/uasort_variation4.phpt @@ -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); diff --git a/ext/standard/tests/array/usort_variation4.phpt b/ext/standard/tests/array/usort_variation4.phpt index 4de45cc..36624b7 100644 --- a/ext/standard/tests/array/usort_variation4.phpt +++ b/ext/standard/tests/array/usort_variation4.phpt @@ -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') ); diff --git a/ext/standard/tests/file/fscanf_variation18.phpt b/ext/standard/tests/file/fscanf_variation18.phpt index bdd444d..e80606a 100644 --- a/ext/standard/tests/file/fscanf_variation18.phpt +++ b/ext/standard/tests/file/fscanf_variation18.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation2.phpt b/ext/standard/tests/file/fscanf_variation2.phpt index 8179aee..55978b9 100644 --- a/ext/standard/tests/file/fscanf_variation2.phpt +++ b/ext/standard/tests/file/fscanf_variation2.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation20.phpt b/ext/standard/tests/file/fscanf_variation20.phpt index 3c17677..cb34edd 100644 --- a/ext/standard/tests/file/fscanf_variation20.phpt +++ b/ext/standard/tests/file/fscanf_variation20.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation27.phpt b/ext/standard/tests/file/fscanf_variation27.phpt index 04f2dd5..137471e 100644 --- a/ext/standard/tests/file/fscanf_variation27.phpt +++ b/ext/standard/tests/file/fscanf_variation27.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation45.phpt b/ext/standard/tests/file/fscanf_variation45.phpt index cfd1fe2..9186e62 100644 --- a/ext/standard/tests/file/fscanf_variation45.phpt +++ b/ext/standard/tests/file/fscanf_variation45.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/is_int_64bit.phpt b/ext/standard/tests/general_functions/is_int_64bit.phpt index 6f7f516..cecfa70 100644 --- a/ext/standard/tests/general_functions/is_int_64bit.phpt +++ b/ext/standard/tests/general_functions/is_int_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/is_numeric.phpt b/ext/standard/tests/general_functions/is_numeric.phpt index e6edffd..9857c94 100644 --- a/ext/standard/tests/general_functions/is_numeric.phpt +++ b/ext/standard/tests/general_functions/is_numeric.phpt @@ -60,7 +60,7 @@ $numerics = array( +0x6698319, 01000000000000000000000, 0123, - 0345900, + 0345, -0200001, -0200001.7, 0200001.7, diff --git a/ext/standard/tests/general_functions/strval.phpt b/ext/standard/tests/general_functions/strval.phpt index 89f5c59..2e1e81c 100644 --- a/ext/standard/tests/general_functions/strval.phpt +++ b/ext/standard/tests/general_functions/strval.phpt @@ -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 diff --git a/ext/standard/tests/general_functions/var_export-locale.phpt b/ext/standard/tests/general_functions/var_export-locale.phpt index b4d122e..76a18ac 100644 --- a/ext/standard/tests/general_functions/var_export-locale.phpt +++ b/ext/standard/tests/general_functions/var_export-locale.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/var_export_basic1.phpt b/ext/standard/tests/general_functions/var_export_basic1.phpt index 8a23fe3..cba04b8 100644 --- a/ext/standard/tests/general_functions/var_export_basic1.phpt +++ b/ext/standard/tests/general_functions/var_export_basic1.phpt @@ -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 ); diff --git a/ext/standard/tests/math/base_convert_basic.phpt b/ext/standard/tests/math/base_convert_basic.phpt index 327f47c..69a2667 100644 --- a/ext/standard/tests/math/base_convert_basic.phpt +++ b/ext/standard/tests/math/base_convert_basic.phpt @@ -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 diff --git a/ext/standard/tests/math/decbin_basic.phpt b/ext/standard/tests/math/decbin_basic.phpt index e6fc5dc..b438995 100644 --- a/ext/standard/tests/math/decbin_basic.phpt +++ b/ext/standard/tests/math/decbin_basic.phpt @@ -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" diff --git a/ext/standard/tests/math/dechex_basic.phpt b/ext/standard/tests/math/dechex_basic.phpt index cba4aa6..2423d8e 100644 --- a/ext/standard/tests/math/dechex_basic.phpt +++ b/ext/standard/tests/math/dechex_basic.phpt @@ -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" diff --git a/ext/standard/tests/math/decoct_basic.phpt b/ext/standard/tests/math/decoct_basic.phpt index 3021e6b..cc1f0a8 100644 --- a/ext/standard/tests/math/decoct_basic.phpt +++ b/ext/standard/tests/math/decoct_basic.phpt @@ -5,7 +5,7 @@ Test decoct() - basic function test decoct() $values = array(10, 3950.5, 3.9505e3, - 039, + 03, 0x5F, "10", "3950.5", diff --git a/ext/standard/tests/password/password_needs_rehash.phpt b/ext/standard/tests/password/password_needs_rehash.phpt index 734729e..8efd0ad 100644 --- a/ext/standard/tests/password/password_needs_rehash.phpt +++ b/ext/standard/tests/password/password_needs_rehash.phpt @@ -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))); diff --git a/ext/standard/tests/strings/sprintf_basic8.phpt b/ext/standard/tests/strings/sprintf_basic8.phpt index bb9ecd1..9256899 100644 --- a/ext/standard/tests/strings/sprintf_basic8.phpt +++ b/ext/standard/tests/strings/sprintf_basic8.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/sprintf_basic8_64bit.phpt b/ext/standard/tests/strings/sprintf_basic8_64bit.phpt index 76d8f05..9c7e1e6 100644 --- a/ext/standard/tests/strings/sprintf_basic8_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_basic8_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/sprintf_variation10.phpt b/ext/standard/tests/strings/sprintf_variation10.phpt index e989d9f..3880b21 100644 --- a/ext/standard/tests/strings/sprintf_variation10.phpt +++ b/ext/standard/tests/strings/sprintf_variation10.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation19.phpt b/ext/standard/tests/strings/sprintf_variation19.phpt index 542ba52..fb3f905 100644 --- a/ext/standard/tests/strings/sprintf_variation19.phpt +++ b/ext/standard/tests/strings/sprintf_variation19.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation21.phpt b/ext/standard/tests/strings/sprintf_variation21.phpt index cbbf16e..20aa1e9 100644 Binary files a/ext/standard/tests/strings/sprintf_variation21.phpt and b/ext/standard/tests/strings/sprintf_variation21.phpt differ diff --git a/ext/standard/tests/strings/sprintf_variation28.phpt b/ext/standard/tests/strings/sprintf_variation28.phpt index 40af96f..e295fc8 100644 --- a/ext/standard/tests/strings/sprintf_variation28.phpt +++ b/ext/standard/tests/strings/sprintf_variation28.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation28_64bit.phpt b/ext/standard/tests/strings/sprintf_variation28_64bit.phpt index 92fdf78..f4d8125 100644 --- a/ext/standard/tests/strings/sprintf_variation28_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation28_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation3.phpt b/ext/standard/tests/strings/sprintf_variation3.phpt index 0435cf3..6c0577e 100644 --- a/ext/standard/tests/strings/sprintf_variation3.phpt +++ b/ext/standard/tests/strings/sprintf_variation3.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation34.phpt b/ext/standard/tests/strings/sprintf_variation34.phpt index 8a5cd80..db905eb 100644 --- a/ext/standard/tests/strings/sprintf_variation34.phpt +++ b/ext/standard/tests/strings/sprintf_variation34.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation34_64bit.phpt b/ext/standard/tests/strings/sprintf_variation34_64bit.phpt index 27e3f0c..a491466 100644 --- a/ext/standard/tests/strings/sprintf_variation34_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation34_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation40.phpt b/ext/standard/tests/strings/sprintf_variation40.phpt index 6efcee0..774650a 100644 --- a/ext/standard/tests/strings/sprintf_variation40.phpt +++ b/ext/standard/tests/strings/sprintf_variation40.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation40_64bit.phpt b/ext/standard/tests/strings/sprintf_variation40_64bit.phpt index 029e94c..fffe615 100644 --- a/ext/standard/tests/strings/sprintf_variation40_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation40_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation46.phpt b/ext/standard/tests/strings/sprintf_variation46.phpt index 311d8c1..9b8892d 100644 --- a/ext/standard/tests/strings/sprintf_variation46.phpt +++ b/ext/standard/tests/strings/sprintf_variation46.phpt @@ -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 diff --git a/ext/standard/tests/strings/vfprintf_basic8.phpt b/ext/standard/tests/strings/vfprintf_basic8.phpt index bf7eb96..aad883c 100644 --- a/ext/standard/tests/strings/vfprintf_basic8.phpt +++ b/ext/standard/tests/strings/vfprintf_basic8.phpt @@ -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'; diff --git a/ext/standard/tests/strings/vfprintf_variation11.phpt b/ext/standard/tests/strings/vfprintf_variation11.phpt index 4bc3885..e94e7e0 100644 --- a/ext/standard/tests/strings/vfprintf_variation11.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt index a552979..ab3e1ce 100644 --- a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vfprintf_variation13.phpt b/ext/standard/tests/strings/vfprintf_variation13.phpt index fd34242..ebb45ac 100644 --- a/ext/standard/tests/strings/vfprintf_variation13.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt index 68baed8..34089e2 100644 --- a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation19.phpt b/ext/standard/tests/strings/vfprintf_variation19.phpt index 26c21e1..b2fbdd8 100644 --- a/ext/standard/tests/strings/vfprintf_variation19.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt index a56357c..8153ce8 100644 --- a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation3.phpt b/ext/standard/tests/strings/vfprintf_variation3.phpt index 1ae9459..99db0bf 100644 --- a/ext/standard/tests/strings/vfprintf_variation3.phpt +++ b/ext/standard/tests/strings/vfprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation5.phpt b/ext/standard/tests/strings/vfprintf_variation5.phpt index eb3646c..9845a3f 100644 --- a/ext/standard/tests/strings/vfprintf_variation5.phpt +++ b/ext/standard/tests/strings/vfprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation9.phpt b/ext/standard/tests/strings/vfprintf_variation9.phpt index dd3093c..8481b41 100644 Binary files a/ext/standard/tests/strings/vfprintf_variation9.phpt and b/ext/standard/tests/strings/vfprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vprintf_basic8.phpt b/ext/standard/tests/strings/vprintf_basic8.phpt index 91c6dd7..d5f6e22 100644 --- a/ext/standard/tests/strings/vprintf_basic8.phpt +++ b/ext/standard/tests/strings/vprintf_basic8.phpt @@ -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"; diff --git a/ext/standard/tests/strings/vprintf_variation11.phpt b/ext/standard/tests/strings/vprintf_variation11.phpt index f803e96..4207bc2 100644 --- a/ext/standard/tests/strings/vprintf_variation11.phpt +++ b/ext/standard/tests/strings/vprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt index 5f65c5f..039006f 100644 --- a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vprintf_variation13.phpt b/ext/standard/tests/strings/vprintf_variation13.phpt index 6b629c8..240db72 100644 --- a/ext/standard/tests/strings/vprintf_variation13.phpt +++ b/ext/standard/tests/strings/vprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt index 8cf768b..06d2bec 100644 --- a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation19.phpt b/ext/standard/tests/strings/vprintf_variation19.phpt index a9288a1..8b826d8 100644 --- a/ext/standard/tests/strings/vprintf_variation19.phpt +++ b/ext/standard/tests/strings/vprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt index d981996..6abc134 100644 --- a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation3.phpt b/ext/standard/tests/strings/vprintf_variation3.phpt index 41c7648..0b59ddd 100644 --- a/ext/standard/tests/strings/vprintf_variation3.phpt +++ b/ext/standard/tests/strings/vprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation5.phpt b/ext/standard/tests/strings/vprintf_variation5.phpt index 6388f28..f54d1e1 100644 --- a/ext/standard/tests/strings/vprintf_variation5.phpt +++ b/ext/standard/tests/strings/vprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation9.phpt b/ext/standard/tests/strings/vprintf_variation9.phpt index a7b513f..5ad2db2 100644 Binary files a/ext/standard/tests/strings/vprintf_variation9.phpt and b/ext/standard/tests/strings/vprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vsprintf_basic8.phpt b/ext/standard/tests/strings/vsprintf_basic8.phpt index 59f17b6..cd2929e 100644 --- a/ext/standard/tests/strings/vsprintf_basic8.phpt +++ b/ext/standard/tests/strings/vsprintf_basic8.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation11.phpt b/ext/standard/tests/strings/vsprintf_variation11.phpt index e7fe663..4cc5b02 100644 --- a/ext/standard/tests/strings/vsprintf_variation11.phpt +++ b/ext/standard/tests/strings/vsprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt index 61327c8..841d104 100644 --- a/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation13.phpt b/ext/standard/tests/strings/vsprintf_variation13.phpt index 3e89fa3..b617975 100644 --- a/ext/standard/tests/strings/vsprintf_variation13.phpt +++ b/ext/standard/tests/strings/vsprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt index 749a4a8..8d2533a 100644 --- a/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation19.phpt b/ext/standard/tests/strings/vsprintf_variation19.phpt index 4ad276a..8d475b7 100644 --- a/ext/standard/tests/strings/vsprintf_variation19.phpt +++ b/ext/standard/tests/strings/vsprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt index 6e805fe..69145ba 100644 --- a/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation3.phpt b/ext/standard/tests/strings/vsprintf_variation3.phpt index fff82c8..2932e15 100644 --- a/ext/standard/tests/strings/vsprintf_variation3.phpt +++ b/ext/standard/tests/strings/vsprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation5.phpt b/ext/standard/tests/strings/vsprintf_variation5.phpt index dd356fb..b2bd0d5 100644 --- a/ext/standard/tests/strings/vsprintf_variation5.phpt +++ b/ext/standard/tests/strings/vsprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation9.phpt b/ext/standard/tests/strings/vsprintf_variation9.phpt index 2d46637..c16531b 100644 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 index 0000000..dd10f1c --- /dev/null +++ b/tests/lang/invalid_octal.phpt @@ -0,0 +1,8 @@ +--TEST-- +Invalid octal +--FILE-- +<?php + +$x = 08; +--EXPECTF-- +Fatal error: Invalid numeric literal in %s on line 3
diff --git a/NEWS b/NEWS index 17b17c6..3f62bba 100644 --- 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 diff --git a/UPGRADING b/UPGRADING index e077053..3cab7cc 100644 --- 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(). diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index f9f2c4b..6ef1bf1 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -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" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 938bc4e..2412631 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -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; } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 1118239..baf859b 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -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 { diff --git a/ext/standard/tests/array/array_rand_variation4.phpt b/ext/standard/tests/array/array_rand_variation4.phpt index 72b6c55..74dada0 100644 --- a/ext/standard/tests/array/array_rand_variation4.phpt +++ b/ext/standard/tests/array/array_rand_variation4.phpt @@ -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", diff --git a/ext/standard/tests/array/array_rand_variation5.phpt b/ext/standard/tests/array/array_rand_variation5.phpt index 69dded9..44f5cd8 100644 --- a/ext/standard/tests/array/array_rand_variation5.phpt +++ b/ext/standard/tests/array/array_rand_variation5.phpt @@ -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 diff --git a/ext/standard/tests/array/array_sum_variation2.phpt b/ext/standard/tests/array/array_sum_variation2.phpt index a697a15..56d9131 100644 --- a/ext/standard/tests/array/array_sum_variation2.phpt +++ b/ext/standard/tests/array/array_sum_variation2.phpt @@ -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) ); diff --git a/ext/standard/tests/array/shuffle_variation3.phpt b/ext/standard/tests/array/shuffle_variation3.phpt index ad8e668..1cb4e4d 100644 --- a/ext/standard/tests/array/shuffle_variation3.phpt +++ b/ext/standard/tests/array/shuffle_variation3.phpt @@ -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), ); diff --git a/ext/standard/tests/array/shuffle_variation4.phpt b/ext/standard/tests/array/shuffle_variation4.phpt index 516e7c9..399197c 100644 --- a/ext/standard/tests/array/shuffle_variation4.phpt +++ b/ext/standard/tests/array/shuffle_variation4.phpt @@ -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) diff --git a/ext/standard/tests/array/uasort_variation4.phpt b/ext/standard/tests/array/uasort_variation4.phpt index 0ed797f..8f0a2db 100644 --- a/ext/standard/tests/array/uasort_variation4.phpt +++ b/ext/standard/tests/array/uasort_variation4.phpt @@ -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); diff --git a/ext/standard/tests/array/usort_variation4.phpt b/ext/standard/tests/array/usort_variation4.phpt index 4de45cc..36624b7 100644 --- a/ext/standard/tests/array/usort_variation4.phpt +++ b/ext/standard/tests/array/usort_variation4.phpt @@ -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') ); diff --git a/ext/standard/tests/file/fscanf_variation18.phpt b/ext/standard/tests/file/fscanf_variation18.phpt index bdd444d..e80606a 100644 --- a/ext/standard/tests/file/fscanf_variation18.phpt +++ b/ext/standard/tests/file/fscanf_variation18.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation2.phpt b/ext/standard/tests/file/fscanf_variation2.phpt index 8179aee..55978b9 100644 --- a/ext/standard/tests/file/fscanf_variation2.phpt +++ b/ext/standard/tests/file/fscanf_variation2.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation20.phpt b/ext/standard/tests/file/fscanf_variation20.phpt index 3c17677..cb34edd 100644 --- a/ext/standard/tests/file/fscanf_variation20.phpt +++ b/ext/standard/tests/file/fscanf_variation20.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation27.phpt b/ext/standard/tests/file/fscanf_variation27.phpt index 04f2dd5..137471e 100644 --- a/ext/standard/tests/file/fscanf_variation27.phpt +++ b/ext/standard/tests/file/fscanf_variation27.phpt @@ -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 ); diff --git a/ext/standard/tests/file/fscanf_variation45.phpt b/ext/standard/tests/file/fscanf_variation45.phpt index cfd1fe2..9186e62 100644 --- a/ext/standard/tests/file/fscanf_variation45.phpt +++ b/ext/standard/tests/file/fscanf_variation45.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/is_int_64bit.phpt b/ext/standard/tests/general_functions/is_int_64bit.phpt index 6f7f516..cecfa70 100644 --- a/ext/standard/tests/general_functions/is_int_64bit.phpt +++ b/ext/standard/tests/general_functions/is_int_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/is_numeric.phpt b/ext/standard/tests/general_functions/is_numeric.phpt index e6edffd..9857c94 100644 --- a/ext/standard/tests/general_functions/is_numeric.phpt +++ b/ext/standard/tests/general_functions/is_numeric.phpt @@ -60,7 +60,7 @@ $numerics = array( +0x6698319, 01000000000000000000000, 0123, - 0345900, + 0345, -0200001, -0200001.7, 0200001.7, diff --git a/ext/standard/tests/general_functions/strval.phpt b/ext/standard/tests/general_functions/strval.phpt index 89f5c59..2e1e81c 100644 --- a/ext/standard/tests/general_functions/strval.phpt +++ b/ext/standard/tests/general_functions/strval.phpt @@ -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 diff --git a/ext/standard/tests/general_functions/var_export-locale.phpt b/ext/standard/tests/general_functions/var_export-locale.phpt index b4d122e..76a18ac 100644 --- a/ext/standard/tests/general_functions/var_export-locale.phpt +++ b/ext/standard/tests/general_functions/var_export-locale.phpt @@ -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 ); diff --git a/ext/standard/tests/general_functions/var_export_basic1.phpt b/ext/standard/tests/general_functions/var_export_basic1.phpt index 8a23fe3..cba04b8 100644 --- a/ext/standard/tests/general_functions/var_export_basic1.phpt +++ b/ext/standard/tests/general_functions/var_export_basic1.phpt @@ -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 ); diff --git a/ext/standard/tests/math/base_convert_basic.phpt b/ext/standard/tests/math/base_convert_basic.phpt index 327f47c..69a2667 100644 --- a/ext/standard/tests/math/base_convert_basic.phpt +++ b/ext/standard/tests/math/base_convert_basic.phpt @@ -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 diff --git a/ext/standard/tests/math/decbin_basic.phpt b/ext/standard/tests/math/decbin_basic.phpt index e6fc5dc..b438995 100644 --- a/ext/standard/tests/math/decbin_basic.phpt +++ b/ext/standard/tests/math/decbin_basic.phpt @@ -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" diff --git a/ext/standard/tests/math/dechex_basic.phpt b/ext/standard/tests/math/dechex_basic.phpt index cba4aa6..2423d8e 100644 --- a/ext/standard/tests/math/dechex_basic.phpt +++ b/ext/standard/tests/math/dechex_basic.phpt @@ -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" diff --git a/ext/standard/tests/math/decoct_basic.phpt b/ext/standard/tests/math/decoct_basic.phpt index 3021e6b..cc1f0a8 100644 --- a/ext/standard/tests/math/decoct_basic.phpt +++ b/ext/standard/tests/math/decoct_basic.phpt @@ -5,7 +5,7 @@ Test decoct() - basic function test decoct() $values = array(10, 3950.5, 3.9505e3, - 039, + 03, 0x5F, "10", "3950.5", diff --git a/ext/standard/tests/password/password_needs_rehash.phpt b/ext/standard/tests/password/password_needs_rehash.phpt index 734729e..8efd0ad 100644 --- a/ext/standard/tests/password/password_needs_rehash.phpt +++ b/ext/standard/tests/password/password_needs_rehash.phpt @@ -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))); diff --git a/ext/standard/tests/strings/sprintf_basic8.phpt b/ext/standard/tests/strings/sprintf_basic8.phpt index bb9ecd1..9256899 100644 --- a/ext/standard/tests/strings/sprintf_basic8.phpt +++ b/ext/standard/tests/strings/sprintf_basic8.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/sprintf_basic8_64bit.phpt b/ext/standard/tests/strings/sprintf_basic8_64bit.phpt index 76d8f05..9c7e1e6 100644 --- a/ext/standard/tests/strings/sprintf_basic8_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_basic8_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/sprintf_variation10.phpt b/ext/standard/tests/strings/sprintf_variation10.phpt index e989d9f..3880b21 100644 --- a/ext/standard/tests/strings/sprintf_variation10.phpt +++ b/ext/standard/tests/strings/sprintf_variation10.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation19.phpt b/ext/standard/tests/strings/sprintf_variation19.phpt index 542ba52..fb3f905 100644 --- a/ext/standard/tests/strings/sprintf_variation19.phpt +++ b/ext/standard/tests/strings/sprintf_variation19.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation21.phpt b/ext/standard/tests/strings/sprintf_variation21.phpt index cbbf16e..20aa1e9 100644 Binary files a/ext/standard/tests/strings/sprintf_variation21.phpt and b/ext/standard/tests/strings/sprintf_variation21.phpt differ diff --git a/ext/standard/tests/strings/sprintf_variation28.phpt b/ext/standard/tests/strings/sprintf_variation28.phpt index 40af96f..e295fc8 100644 --- a/ext/standard/tests/strings/sprintf_variation28.phpt +++ b/ext/standard/tests/strings/sprintf_variation28.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation28_64bit.phpt b/ext/standard/tests/strings/sprintf_variation28_64bit.phpt index 92fdf78..f4d8125 100644 --- a/ext/standard/tests/strings/sprintf_variation28_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation28_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation3.phpt b/ext/standard/tests/strings/sprintf_variation3.phpt index 0435cf3..6c0577e 100644 --- a/ext/standard/tests/strings/sprintf_variation3.phpt +++ b/ext/standard/tests/strings/sprintf_variation3.phpt @@ -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 diff --git a/ext/standard/tests/strings/sprintf_variation34.phpt b/ext/standard/tests/strings/sprintf_variation34.phpt index 8a5cd80..db905eb 100644 --- a/ext/standard/tests/strings/sprintf_variation34.phpt +++ b/ext/standard/tests/strings/sprintf_variation34.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation34_64bit.phpt b/ext/standard/tests/strings/sprintf_variation34_64bit.phpt index 27e3f0c..a491466 100644 --- a/ext/standard/tests/strings/sprintf_variation34_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation34_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation40.phpt b/ext/standard/tests/strings/sprintf_variation40.phpt index 6efcee0..774650a 100644 --- a/ext/standard/tests/strings/sprintf_variation40.phpt +++ b/ext/standard/tests/strings/sprintf_variation40.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation40_64bit.phpt b/ext/standard/tests/strings/sprintf_variation40_64bit.phpt index 029e94c..fffe615 100644 --- a/ext/standard/tests/strings/sprintf_variation40_64bit.phpt +++ b/ext/standard/tests/strings/sprintf_variation40_64bit.phpt @@ -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 ); diff --git a/ext/standard/tests/strings/sprintf_variation46.phpt b/ext/standard/tests/strings/sprintf_variation46.phpt index 311d8c1..9b8892d 100644 --- a/ext/standard/tests/strings/sprintf_variation46.phpt +++ b/ext/standard/tests/strings/sprintf_variation46.phpt @@ -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 diff --git a/ext/standard/tests/strings/vfprintf_basic8.phpt b/ext/standard/tests/strings/vfprintf_basic8.phpt index bf7eb96..aad883c 100644 --- a/ext/standard/tests/strings/vfprintf_basic8.phpt +++ b/ext/standard/tests/strings/vfprintf_basic8.phpt @@ -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'; diff --git a/ext/standard/tests/strings/vfprintf_variation11.phpt b/ext/standard/tests/strings/vfprintf_variation11.phpt index 4bc3885..e94e7e0 100644 --- a/ext/standard/tests/strings/vfprintf_variation11.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt index a552979..ab3e1ce 100644 --- a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vfprintf_variation13.phpt b/ext/standard/tests/strings/vfprintf_variation13.phpt index fd34242..ebb45ac 100644 --- a/ext/standard/tests/strings/vfprintf_variation13.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt index 68baed8..34089e2 100644 --- a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation19.phpt b/ext/standard/tests/strings/vfprintf_variation19.phpt index 26c21e1..b2fbdd8 100644 --- a/ext/standard/tests/strings/vfprintf_variation19.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt index a56357c..8153ce8 100644 --- a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation3.phpt b/ext/standard/tests/strings/vfprintf_variation3.phpt index 1ae9459..99db0bf 100644 --- a/ext/standard/tests/strings/vfprintf_variation3.phpt +++ b/ext/standard/tests/strings/vfprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation5.phpt b/ext/standard/tests/strings/vfprintf_variation5.phpt index eb3646c..9845a3f 100644 --- a/ext/standard/tests/strings/vfprintf_variation5.phpt +++ b/ext/standard/tests/strings/vfprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vfprintf_variation9.phpt b/ext/standard/tests/strings/vfprintf_variation9.phpt index dd3093c..8481b41 100644 Binary files a/ext/standard/tests/strings/vfprintf_variation9.phpt and b/ext/standard/tests/strings/vfprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vprintf_basic8.phpt b/ext/standard/tests/strings/vprintf_basic8.phpt index 91c6dd7..d5f6e22 100644 --- a/ext/standard/tests/strings/vprintf_basic8.phpt +++ b/ext/standard/tests/strings/vprintf_basic8.phpt @@ -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"; diff --git a/ext/standard/tests/strings/vprintf_variation11.phpt b/ext/standard/tests/strings/vprintf_variation11.phpt index f803e96..4207bc2 100644 --- a/ext/standard/tests/strings/vprintf_variation11.phpt +++ b/ext/standard/tests/strings/vprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt index 5f65c5f..039006f 100644 --- a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vprintf_variation13.phpt b/ext/standard/tests/strings/vprintf_variation13.phpt index 6b629c8..240db72 100644 --- a/ext/standard/tests/strings/vprintf_variation13.phpt +++ b/ext/standard/tests/strings/vprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt index 8cf768b..06d2bec 100644 --- a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation19.phpt b/ext/standard/tests/strings/vprintf_variation19.phpt index a9288a1..8b826d8 100644 --- a/ext/standard/tests/strings/vprintf_variation19.phpt +++ b/ext/standard/tests/strings/vprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt index d981996..6abc134 100644 --- a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation3.phpt b/ext/standard/tests/strings/vprintf_variation3.phpt index 41c7648..0b59ddd 100644 --- a/ext/standard/tests/strings/vprintf_variation3.phpt +++ b/ext/standard/tests/strings/vprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation5.phpt b/ext/standard/tests/strings/vprintf_variation5.phpt index 6388f28..f54d1e1 100644 --- a/ext/standard/tests/strings/vprintf_variation5.phpt +++ b/ext/standard/tests/strings/vprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vprintf_variation9.phpt b/ext/standard/tests/strings/vprintf_variation9.phpt index a7b513f..5ad2db2 100644 Binary files a/ext/standard/tests/strings/vprintf_variation9.phpt and b/ext/standard/tests/strings/vprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vsprintf_basic8.phpt b/ext/standard/tests/strings/vsprintf_basic8.phpt index 59f17b6..cd2929e 100644 --- a/ext/standard/tests/strings/vsprintf_basic8.phpt +++ b/ext/standard/tests/strings/vsprintf_basic8.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation11.phpt b/ext/standard/tests/strings/vsprintf_variation11.phpt index e7fe663..4cc5b02 100644 --- a/ext/standard/tests/strings/vsprintf_variation11.phpt +++ b/ext/standard/tests/strings/vsprintf_variation11.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt index 61327c8..841d104 100644 --- a/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation11_64bit.phpt @@ -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) ); diff --git a/ext/standard/tests/strings/vsprintf_variation13.phpt b/ext/standard/tests/strings/vsprintf_variation13.phpt index 3e89fa3..b617975 100644 --- a/ext/standard/tests/strings/vsprintf_variation13.phpt +++ b/ext/standard/tests/strings/vsprintf_variation13.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt index 749a4a8..8d2533a 100644 --- a/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation13_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation19.phpt b/ext/standard/tests/strings/vsprintf_variation19.phpt index 4ad276a..8d475b7 100644 --- a/ext/standard/tests/strings/vsprintf_variation19.phpt +++ b/ext/standard/tests/strings/vsprintf_variation19.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt index 6e805fe..69145ba 100644 --- a/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt +++ b/ext/standard/tests/strings/vsprintf_variation19_64bit.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation3.phpt b/ext/standard/tests/strings/vsprintf_variation3.phpt index fff82c8..2932e15 100644 --- a/ext/standard/tests/strings/vsprintf_variation3.phpt +++ b/ext/standard/tests/strings/vsprintf_variation3.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation5.phpt b/ext/standard/tests/strings/vsprintf_variation5.phpt index dd356fb..b2bd0d5 100644 --- a/ext/standard/tests/strings/vsprintf_variation5.phpt +++ b/ext/standard/tests/strings/vsprintf_variation5.phpt @@ -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) diff --git a/ext/standard/tests/strings/vsprintf_variation9.phpt b/ext/standard/tests/strings/vsprintf_variation9.phpt index 2d46637..c16531b 100644 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 index 0000000..dd10f1c --- /dev/null +++ b/tests/lang/invalid_octal.phpt @@ -0,0 +1,8 @@ +--TEST-- +Invalid octal +--FILE-- +<?php + +$x = 08; +--EXPECTF-- +Fatal error: Invalid numeric literal in %s on line 3