From: Tjerk Meesters Date: Mon, 1 Sep 2014 14:43:17 +0000 (+0800) Subject: Merge branch 'PHP-5.6' X-Git-Tag: PRE_PHP7_REMOVALS~172 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5d5a7b1f7f66fd4224088df5d03a7a585e19e4dc;p=php Merge branch 'PHP-5.6' * PHP-5.6: Updated UPGRADING for #38409 Updated NEWS for #38409 Added test case Making ini parser typed - Added ZEND_INI_SCANNER_TYPED mode for parse_ini_string() and parse_ini_file() - Added NULL_NULL token to separate it from BOOL_FALSE and BOOL_TRUE - Added zend_ini_copy_typed_value() function for zval initialisation - Updated RETURN_TOKEN() to observe scanner_mode Conflicts: Zend/zend_ini_parser.y Zend/zend_ini_scanner.c --- 5d5a7b1f7f66fd4224088df5d03a7a585e19e4dc diff --cc Zend/zend_ini_parser.y index 8093458308,e9ea36956d..5b1d0ae470 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@@ -289,19 -291,19 +290,19 @@@ statement printf("NORMAL: '%s' = '%s'\n", Z_STRVAL($1), Z_STRVAL($3)); #endif ZEND_INI_PARSER_CB(&$1, &$3, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); - free(Z_STRVAL($1)); - zval_internal_dtor(&$3); + zend_string_release(Z_STR($1)); - zend_string_release(Z_STR($3)); ++ zval_ptr_dtor(&$3); } | TC_OFFSET option_offset ']' '=' string_or_value { #if DEBUG_CFG_PARSER printf("OFFSET: '%s'[%s] = '%s'\n", Z_STRVAL($1), Z_STRVAL($2), Z_STRVAL($5)); #endif ZEND_INI_PARSER_CB(&$1, &$5, &$2, ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); - free(Z_STRVAL($1)); - free(Z_STRVAL($2)); - zval_internal_dtor(&$5); + zend_string_release(Z_STR($1)); + zend_string_release(Z_STR($2)); - zend_string_release(Z_STR($5)); ++ zval_ptr_dtor(&$5); } - | TC_LABEL { ZEND_INI_PARSER_CB(&$1, NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); free(Z_STRVAL($1)); } + | TC_LABEL { ZEND_INI_PARSER_CB(&$1, NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); zend_string_release(Z_STR($1)); } | END_OF_LINE ; diff --cc Zend/zend_ini_scanner.c index b41c4c3394,97f664ad3b..b1b75efce2 --- a/Zend/zend_ini_scanner.c +++ b/Zend/zend_ini_scanner.c @@@ -133,13 -134,61 +134,59 @@@ ZEND_API zend_ini_scanner_globals ini_s /* Eat trailing whitespace */ #define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X') -#define zend_ini_copy_value(retval, str, len) { \ - Z_STRVAL_P(retval) = zend_strndup(str, len); \ - Z_STRLEN_P(retval) = len; \ - Z_TYPE_P(retval) = IS_STRING; \ -} +#define zend_ini_copy_value(retval, str, len) \ + ZVAL_NEW_STR(retval, zend_string_init(str, len, 1)) + - #define RETURN_TOKEN(type, str, len) { \ - zend_ini_copy_value(ini_lval, str, len); \ - return type; \ + #define RETURN_TOKEN(type, str, len) { \ + if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \ + zend_ini_copy_typed_value(ini_lval, type, str, len); \ + } else { \ + zend_ini_copy_value(ini_lval, str, len); \ + } \ + return type; \ + } + + static inline int convert_to_number(zval *retval, const char *str, const int str_len) + { + zend_uchar type; + int overflow; + long lval; + double dval; + + if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) { + if (type == IS_LONG) { + ZVAL_LONG(retval, lval); + return SUCCESS; + } else if (type == IS_DOUBLE && !overflow) { + ZVAL_DOUBLE(retval, dval); + return SUCCESS; + } + } + + return FAILURE; + } + + static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len) + { + switch (type) { + case BOOL_FALSE: + case BOOL_TRUE: + ZVAL_BOOL(retval, type == BOOL_TRUE); + break; + + case NULL_NULL: + ZVAL_NULL(retval); + break; + + case TC_NUMBER: + if (convert_to_number(retval, str, len) == SUCCESS) { + break; + } + /* intentional fall-through */ + default: + zend_ini_copy_value(retval, str, len); + } } static void _yy_push_state(int new_state TSRMLS_DC) @@@ -330,7 -380,7 +377,7 @@@ restart } } - #line 334 "Zend/zend_ini_scanner.c" -#line 384 "Zend/zend_ini_scanner.c" ++#line 381 "Zend/zend_ini_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@@ -435,31 -484,31 +481,31 @@@ yyc_INITIAL case '>': case '?': case '@': - case ']': goto yy13; - case ';': goto yy14; - case '=': goto yy16; + case ']': goto yy14; + case ';': goto yy15; + case '=': goto yy17; case 'F': - case 'f': goto yy18; + case 'f': goto yy19; case 'N': - case 'n': goto yy19; + case 'n': goto yy20; case 'O': - case 'o': goto yy20; + case 'o': goto yy21; case 'T': - case 't': goto yy21; + case 't': goto yy22; case 'Y': - case 'y': goto yy22; - case '[': goto yy23; - default: goto yy2; + case 'y': goto yy23; + case '[': goto yy24; + default: goto yy3; } - yy2: - YYDEBUG(2, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy26; yy3: YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy27; + yy4: + YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 426 "Zend/zend_ini_scanner.l" -#line 480 "Zend/zend_ini_scanner.l" ++#line 477 "Zend/zend_ini_scanner.l" { /* Get option name */ /* Eat leading whitespace */ EAT_LEADING_WHITESPACE(); @@@ -469,40 -518,40 +515,40 @@@ RETURN_TOKEN(TC_LABEL, yytext, yyleng); } - #line 473 "Zend/zend_ini_scanner.c" - yy4: - YYDEBUG(4, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - goto yy68; -#line 522 "Zend/zend_ini_scanner.c" ++#line 519 "Zend/zend_ini_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + goto yy74; + yy6: + YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 572 "Zend/zend_ini_scanner.l" -#line 626 "Zend/zend_ini_scanner.l" ++#line 623 "Zend/zend_ini_scanner.l" { /* eat whitespace */ goto restart; } - #line 487 "Zend/zend_ini_scanner.c" - yy6: - YYDEBUG(6, *YYCURSOR); - ++YYCURSOR; -#line 536 "Zend/zend_ini_scanner.c" ++#line 533 "Zend/zend_ini_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); + ++YYCURSOR; + yy8: + YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 577 "Zend/zend_ini_scanner.l" -#line 631 "Zend/zend_ini_scanner.l" ++#line 628 "Zend/zend_ini_scanner.l" { SCNG(lineno)++; return END_OF_LINE; } - #line 499 "Zend/zend_ini_scanner.c" - yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy71; - goto yy7; -#line 548 "Zend/zend_ini_scanner.c" ++#line 545 "Zend/zend_ini_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy77; + goto yy8; + yy10: + YYDEBUG(10, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { @@@ -517,54 -566,54 +563,54 @@@ } } else { if (yych <= ':') { - if (yych == '#') goto yy58; - goto yy26; + if (yych == '#') goto yy64; + goto yy27; } else { - if (yych <= ';') goto yy53; - if (yych == '=') goto yy51; - goto yy26; + if (yych <= ';') goto yy59; + if (yych == '=') goto yy57; + goto yy27; } } - yy10: - YYDEBUG(10, *YYCURSOR); - ++YYCURSOR; + yy11: YYDEBUG(11, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(12, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 500 "Zend/zend_ini_scanner.l" -#line 554 "Zend/zend_ini_scanner.l" ++#line 551 "Zend/zend_ini_scanner.l" { /* Disallow these chars outside option values */ return yytext[0]; } - #line 538 "Zend/zend_ini_scanner.c" - yy12: - YYDEBUG(12, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - goto yy59; -#line 587 "Zend/zend_ini_scanner.c" ++#line 584 "Zend/zend_ini_scanner.c" yy13: YYDEBUG(13, *YYCURSOR); - yych = *++YYCURSOR; - goto yy26; + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + goto yy65; yy14: YYDEBUG(14, *YYCURSOR); + yych = *++YYCURSOR; + goto yy27; + yy15: + YYDEBUG(15, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - goto yy54; - YYDEBUG(15, *YYCURSOR); + goto yy60; + YYDEBUG(16, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 600 "Zend/zend_ini_scanner.l" -#line 654 "Zend/zend_ini_scanner.l" ++#line 651 "Zend/zend_ini_scanner.l" { return 0; } - #line 559 "Zend/zend_ini_scanner.c" - yy16: - YYDEBUG(16, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy52; -#line 608 "Zend/zend_ini_scanner.c" ++#line 605 "Zend/zend_ini_scanner.c" yy17: YYDEBUG(17, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy58; + yy18: + YYDEBUG(18, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 436 "Zend/zend_ini_scanner.l" -#line 490 "Zend/zend_ini_scanner.l" ++#line 487 "Zend/zend_ini_scanner.l" { /* Start option value */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { yy_push_state(ST_RAW TSRMLS_CC); @@@ -573,13 -622,7 +619,7 @@@ } return '='; } - #line 577 "Zend/zend_ini_scanner.c" - yy18: - YYDEBUG(18, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy48; - if (yych == 'a') goto yy48; - goto yy26; -#line 626 "Zend/zend_ini_scanner.c" ++#line 623 "Zend/zend_ini_scanner.c" yy19: YYDEBUG(19, *YYCURSOR); yych = *++YYCURSOR; @@@ -615,21 -664,21 +661,21 @@@ yy21 yy22: YYDEBUG(22, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy27; - if (yych == 'e') goto yy27; - goto yy26; + if (yych == 'R') goto yy37; + if (yych == 'r') goto yy37; + goto yy27; yy23: YYDEBUG(23, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy28; + if (yych == 'e') goto yy28; + goto yy27; + yy24: YYDEBUG(24, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(25, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 355 "Zend/zend_ini_scanner.l" -#line 405 "Zend/zend_ini_scanner.l" ++#line 402 "Zend/zend_ini_scanner.l" { /* Section start */ /* Enter section data lookup state */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { @@@ -639,9 -688,9 +685,9 @@@ } return TC_SECTION; } - #line 643 "Zend/zend_ini_scanner.c" - yy25: - YYDEBUG(25, *YYCURSOR); -#line 692 "Zend/zend_ini_scanner.c" ++#line 689 "Zend/zend_ini_scanner.c" + yy26: + YYDEBUG(26, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -663,13 -712,13 +709,13 @@@ yy29 ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(29, *YYCURSOR); + YYDEBUG(30, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy28; + goto yy29; } - YYDEBUG(30, *YYCURSOR); + YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 380 "Zend/zend_ini_scanner.l" -#line 430 "Zend/zend_ini_scanner.l" ++#line 427 "Zend/zend_ini_scanner.l" { /* Start of option with offset */ /* Eat leading whitespace */ EAT_LEADING_WHITESPACE(); @@@ -682,9 -731,9 +728,9 @@@ RETURN_TOKEN(TC_OFFSET, yytext, yyleng); } - #line 686 "Zend/zend_ini_scanner.c" - yy31: - YYDEBUG(31, *YYCURSOR); -#line 735 "Zend/zend_ini_scanner.c" ++#line 732 "Zend/zend_ini_scanner.c" + yy32: + YYDEBUG(32, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -725,16 -774,16 +771,16 @@@ } } } - yy33: - YYDEBUG(33, *YYCURSOR); + yy34: + YYDEBUG(34, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 418 "Zend/zend_ini_scanner.l" -#line 468 "Zend/zend_ini_scanner.l" ++#line 465 "Zend/zend_ini_scanner.l" { /* TRUE value (when used outside option value/offset this causes parse error!) */ RETURN_TOKEN(BOOL_TRUE, "1", 1); } - #line 736 "Zend/zend_ini_scanner.c" - yy34: - YYDEBUG(34, *YYCURSOR); -#line 785 "Zend/zend_ini_scanner.c" ++#line 782 "Zend/zend_ini_scanner.c" + yy35: + YYDEBUG(35, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -799,16 -848,16 +845,16 @@@ yy40 } } } - yy41: - YYDEBUG(41, *YYCURSOR); + yy42: + YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 422 "Zend/zend_ini_scanner.l" -#line 472 "Zend/zend_ini_scanner.l" ++#line 469 "Zend/zend_ini_scanner.l" { /* FALSE value (when used outside option value/offset this causes parse error!)*/ RETURN_TOKEN(BOOL_FALSE, "", 0); } - #line 810 "Zend/zend_ini_scanner.c" - yy42: - YYDEBUG(42, *YYCURSOR); -#line 859 "Zend/zend_ini_scanner.c" ++#line 856 "Zend/zend_ini_scanner.c" + yy43: + YYDEBUG(43, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -877,25 -920,57 +917,57 @@@ yy46 yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy39; - if (yych == 'e') goto yy39; - goto yy26; + if (yych == 'L') goto yy48; + if (yych != 'l') goto yy27; yy48: YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy49; - if (yych != 'l') goto yy26; - yy49: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy50; - if (yych != 's') goto yy26; + if (yych <= '&') { + if (yych <= 0x1F) { + if (yych <= '\n') { + if (yych <= 0x08) goto yy26; + if (yych <= '\t') goto yy51; + } else { + if (yych != '\r') goto yy26; + } + } else { + if (yych <= '#') { + if (yych <= ' ') goto yy48; + if (yych >= '#') goto yy26; + } else { + if (yych == '%') goto yy26; + } + } + } else { + if (yych <= '=') { + if (yych <= ':') { + if (yych <= '\'') goto yy26; + if (yych >= '*') goto yy26; + } else { + if (yych == '<') goto yy26; + } + } else { + if (yych <= ']') { + if (yych == '[') goto yy29; + goto yy26; + } else { + if (yych <= '^') goto yy50; + if (yych <= 'z') goto yy26; + if (yych >= 0x7F) goto yy26; + } + } + } yy50: YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy39; - if (yych == 'e') goto yy39; - goto yy26; + yyleng = YYCURSOR - SCNG(yy_text); -#line 476 "Zend/zend_ini_scanner.l" ++#line 473 "Zend/zend_ini_scanner.l" + { + RETURN_TOKEN(NULL_NULL, "", 0); + } -#line 974 "Zend/zend_ini_scanner.c" ++#line 971 "Zend/zend_ini_scanner.c" yy51: YYDEBUG(51, *YYCURSOR); ++YYCURSOR; @@@ -904,39 -979,70 +976,70 @@@ YYDEBUG(52, *YYCURSOR); if (yych == '\t') goto yy51; if (yych == ' ') goto yy51; - goto yy17; + goto yy50; yy53: YYDEBUG(53, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy40; + if (yych == 'e') goto yy40; + goto yy27; yy54: YYDEBUG(54, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy53; - } - if (yych >= '\r') goto yy57; + yych = *++YYCURSOR; + if (yych == 'L') goto yy55; + if (yych != 'l') goto yy27; yy55: YYDEBUG(55, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'S') goto yy56; + if (yych != 's') goto yy27; yy56: YYDEBUG(56, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy40; + if (yych == 'e') goto yy40; + goto yy27; + yy57: + YYDEBUG(57, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + yy58: + YYDEBUG(58, *YYCURSOR); + if (yych == '\t') goto yy57; + if (yych == ' ') goto yy57; + goto yy18; + yy59: + YYDEBUG(59, *YYCURSOR); + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; + yy60: + YYDEBUG(60, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy59; + } + if (yych >= '\r') goto yy63; + yy61: + YYDEBUG(61, *YYCURSOR); + ++YYCURSOR; + yy62: + YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 582 "Zend/zend_ini_scanner.l" -#line 636 "Zend/zend_ini_scanner.l" ++#line 633 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 933 "Zend/zend_ini_scanner.c" - yy57: - YYDEBUG(57, *YYCURSOR); -#line 1039 "Zend/zend_ini_scanner.c" ++#line 1036 "Zend/zend_ini_scanner.c" + yy63: + YYDEBUG(63, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy55; - goto yy56; - yy58: - YYDEBUG(58, *YYCURSOR); + if (yych == '\n') goto yy61; + goto yy62; + yy64: + YYDEBUG(64, *YYCURSOR); yyaccept = 1; YYMARKER = ++YYCURSOR; YYFILL(2); @@@ -992,37 -1098,37 +1095,37 @@@ yy68 YYMARKER = ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(63, *YYCURSOR); + YYDEBUG(69, *YYCURSOR); if (yych <= '\f') { - if (yych <= 0x08) goto yy60; - if (yych <= '\t') goto yy62; - if (yych >= '\v') goto yy60; + if (yych <= 0x08) goto yy66; + if (yych <= '\t') goto yy68; + if (yych >= '\v') goto yy66; } else { - if (yych <= '\r') goto yy66; - if (yych == ' ') goto yy62; - goto yy60; + if (yych <= '\r') goto yy72; + if (yych == ' ') goto yy68; + goto yy66; } - yy64: - YYDEBUG(64, *YYCURSOR); + yy70: + YYDEBUG(70, *YYCURSOR); ++YYCURSOR; - yy65: - YYDEBUG(65, *YYCURSOR); + yy71: + YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 588 "Zend/zend_ini_scanner.l" -#line 642 "Zend/zend_ini_scanner.l" ++#line 639 "Zend/zend_ini_scanner.l" { /* #Comment */ zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno)); BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 1019 "Zend/zend_ini_scanner.c" - yy66: - YYDEBUG(66, *YYCURSOR); -#line 1125 "Zend/zend_ini_scanner.c" ++#line 1122 "Zend/zend_ini_scanner.c" + yy72: + YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy64; - goto yy65; - yy67: - YYDEBUG(67, *YYCURSOR); + if (yych == '\n') goto yy70; + goto yy71; + yy73: + YYDEBUG(73, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(2); @@@ -1145,17 -1251,17 +1248,17 @@@ yyc_ST_DOUBLE_QUOTES 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - YYDEBUG(73, *YYCURSOR); + YYDEBUG(79, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych == '"') goto yy77; - if (yych == '$') goto yy79; - YYDEBUG(75, *YYCURSOR); + if (yych == '"') goto yy83; + if (yych == '$') goto yy85; + YYDEBUG(81, *YYCURSOR); ++YYCURSOR; - yy76: - YYDEBUG(76, *YYCURSOR); + yy82: + YYDEBUG(82, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 532 "Zend/zend_ini_scanner.l" -#line 586 "Zend/zend_ini_scanner.l" ++#line 583 "Zend/zend_ini_scanner.l" { /* Escape double quoted string contents */ if (YYCURSOR > YYLIMIT) { return 0; @@@ -1191,37 -1297,37 +1294,37 @@@ zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC); return TC_QUOTED_STRING; } - #line 1195 "Zend/zend_ini_scanner.c" - yy77: - YYDEBUG(77, *YYCURSOR); -#line 1301 "Zend/zend_ini_scanner.c" ++#line 1298 "Zend/zend_ini_scanner.c" + yy83: + YYDEBUG(83, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy83; - yy78: - YYDEBUG(78, *YYCURSOR); + goto yy89; + yy84: + YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 527 "Zend/zend_ini_scanner.l" -#line 581 "Zend/zend_ini_scanner.l" ++#line 578 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string ends */ yy_pop_state(TSRMLS_C); return '"'; } - #line 1209 "Zend/zend_ini_scanner.c" - yy79: - YYDEBUG(79, *YYCURSOR); -#line 1315 "Zend/zend_ini_scanner.c" ++#line 1312 "Zend/zend_ini_scanner.c" + yy85: + YYDEBUG(85, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '{') goto yy76; - YYDEBUG(80, *YYCURSOR); + if (yych != '{') goto yy82; + YYDEBUG(86, *YYCURSOR); ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); + YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 398 "Zend/zend_ini_scanner.l" -#line 448 "Zend/zend_ini_scanner.l" ++#line 445 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } - #line 1223 "Zend/zend_ini_scanner.c" - yy82: - YYDEBUG(82, *YYCURSOR); -#line 1329 "Zend/zend_ini_scanner.c" ++#line 1326 "Zend/zend_ini_scanner.c" + yy88: + YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -1311,65 -1417,65 +1414,65 @@@ yyc_ST_OFFSET } } } - yy86: - YYDEBUG(86, *YYCURSOR); + yy92: + YYDEBUG(92, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - goto yy105; - yy87: - YYDEBUG(87, *YYCURSOR); + goto yy111; + yy93: + YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 518 "Zend/zend_ini_scanner.l" -#line 572 "Zend/zend_ini_scanner.l" ++#line 569 "Zend/zend_ini_scanner.l" { /* Get rest as section/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } - #line 1327 "Zend/zend_ini_scanner.c" - yy88: - YYDEBUG(88, *YYCURSOR); -#line 1433 "Zend/zend_ini_scanner.c" ++#line 1430 "Zend/zend_ini_scanner.c" + yy94: + YYDEBUG(94, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 128) { - goto yy131; + goto yy137; } - if (yych == '"') goto yy133; - if (yych == ']') goto yy134; - goto yy105; - yy89: - YYDEBUG(89, *YYCURSOR); + if (yych == '"') goto yy139; + if (yych == ']') goto yy140; + goto yy111; + yy95: + YYDEBUG(95, *YYCURSOR); ++YYCURSOR; - yy90: - YYDEBUG(90, *YYCURSOR); + yy96: + YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 600 "Zend/zend_ini_scanner.l" -#line 654 "Zend/zend_ini_scanner.l" ++#line 651 "Zend/zend_ini_scanner.l" { return 0; } - #line 1348 "Zend/zend_ini_scanner.c" - yy91: - YYDEBUG(91, *YYCURSOR); -#line 1454 "Zend/zend_ini_scanner.c" ++#line 1451 "Zend/zend_ini_scanner.c" + yy97: + YYDEBUG(97, *YYCURSOR); ++YYCURSOR; - yy92: - YYDEBUG(92, *YYCURSOR); + yy98: + YYDEBUG(98, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 522 "Zend/zend_ini_scanner.l" -#line 576 "Zend/zend_ini_scanner.l" ++#line 573 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } - #line 1360 "Zend/zend_ini_scanner.c" - yy93: - YYDEBUG(93, *YYCURSOR); -#line 1466 "Zend/zend_ini_scanner.c" ++#line 1463 "Zend/zend_ini_scanner.c" + yy99: + YYDEBUG(99, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\\') { - if (yych <= 0x00) goto yy90; - if (yych <= '[') goto yy104; - goto yy109; + if (yych <= 0x00) goto yy96; + if (yych <= '[') goto yy110; + goto yy115; } else { - if (yych == '{') goto yy129; - goto yy104; + if (yych == '{') goto yy135; + goto yy110; } - yy94: - YYDEBUG(94, *YYCURSOR); + yy100: + YYDEBUG(100, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { @@@ -1415,16 -1521,16 +1518,16 @@@ yy103 } } } - yy98: - YYDEBUG(98, *YYCURSOR); + yy104: + YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 496 "Zend/zend_ini_scanner.l" -#line 550 "Zend/zend_ini_scanner.l" ++#line 547 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } - #line 1426 "Zend/zend_ini_scanner.c" - yy99: - YYDEBUG(99, *YYCURSOR); -#line 1532 "Zend/zend_ini_scanner.c" ++#line 1529 "Zend/zend_ini_scanner.c" + yy105: + YYDEBUG(105, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { @@@ -1439,38 -1545,38 +1542,38 @@@ } } else { if (yych <= ':') { - if (yych != '\'') goto yy105; + if (yych != '\'') goto yy111; } else { - if (yych <= ';') goto yy100; - if (yych != ']') goto yy105; + if (yych <= ';') goto yy106; + if (yych != ']') goto yy111; } } - yy100: - YYDEBUG(100, *YYCURSOR); + yy106: + YYDEBUG(106, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 492 "Zend/zend_ini_scanner.l" -#line 546 "Zend/zend_ini_scanner.l" ++#line 543 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } - #line 1456 "Zend/zend_ini_scanner.c" - yy101: - YYDEBUG(101, *YYCURSOR); -#line 1562 "Zend/zend_ini_scanner.c" ++#line 1559 "Zend/zend_ini_scanner.c" + yy107: + YYDEBUG(107, *YYCURSOR); yych = *++YYCURSOR; - goto yy104; - yy102: - YYDEBUG(102, *YYCURSOR); + goto yy110; + yy108: + YYDEBUG(108, *YYCURSOR); ++YYCURSOR; - yy103: - YYDEBUG(103, *YYCURSOR); + yy109: + YYDEBUG(109, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 393 "Zend/zend_ini_scanner.l" -#line 443 "Zend/zend_ini_scanner.l" ++#line 440 "Zend/zend_ini_scanner.l" { /* End of section or an option offset */ BEGIN(INITIAL); return ']'; } - #line 1472 "Zend/zend_ini_scanner.c" - yy104: - YYDEBUG(104, *YYCURSOR); -#line 1578 "Zend/zend_ini_scanner.c" ++#line 1575 "Zend/zend_ini_scanner.c" + yy110: + YYDEBUG(110, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); @@@ -1750,15 -1856,15 +1853,15 @@@ yy131 ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(126, *YYCURSOR); + YYDEBUG(132, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy125; + goto yy131; } - YYDEBUG(127, *YYCURSOR); + YYDEBUG(133, *YYCURSOR); ++YYCURSOR; - YYDEBUG(128, *YYCURSOR); + YYDEBUG(134, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 365 "Zend/zend_ini_scanner.l" -#line 415 "Zend/zend_ini_scanner.l" ++#line 412 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@@ -1767,20 -1873,20 +1870,20 @@@ } RETURN_TOKEN(TC_RAW, yytext, yyleng); } - #line 1771 "Zend/zend_ini_scanner.c" - yy129: - YYDEBUG(129, *YYCURSOR); -#line 1877 "Zend/zend_ini_scanner.c" ++#line 1874 "Zend/zend_ini_scanner.c" + yy135: + YYDEBUG(135, *YYCURSOR); ++YYCURSOR; - YYDEBUG(130, *YYCURSOR); + YYDEBUG(136, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 398 "Zend/zend_ini_scanner.l" -#line 448 "Zend/zend_ini_scanner.l" ++#line 445 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } - #line 1782 "Zend/zend_ini_scanner.c" - yy131: - YYDEBUG(131, *YYCURSOR); -#line 1888 "Zend/zend_ini_scanner.c" ++#line 1885 "Zend/zend_ini_scanner.c" + yy137: + YYDEBUG(137, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); @@@ -1871,33 -1977,33 +1974,33 @@@ yyc_ST_RAW } } else { if (yych <= ' ') { - if (yych <= '\r') goto yy144; - if (yych <= 0x1F) goto yy139; - goto yy141; + if (yych <= '\r') goto yy150; + if (yych <= 0x1F) goto yy145; + goto yy147; } else { - if (yych == ';') goto yy145; - goto yy139; + if (yych == ';') goto yy151; + goto yy145; } } - YYDEBUG(137, *YYCURSOR); + YYDEBUG(143, *YYCURSOR); ++YYCURSOR; - YYDEBUG(138, *YYCURSOR); + YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 595 "Zend/zend_ini_scanner.l" -#line 649 "Zend/zend_ini_scanner.l" ++#line 646 "Zend/zend_ini_scanner.l" { /* End of option value (if EOF is reached before EOL */ BEGIN(INITIAL); return END_OF_LINE; } - #line 1892 "Zend/zend_ini_scanner.c" - yy139: - YYDEBUG(139, *YYCURSOR); -#line 1998 "Zend/zend_ini_scanner.c" ++#line 1995 "Zend/zend_ini_scanner.c" + yy145: + YYDEBUG(145, *YYCURSOR); ++YYCURSOR; - yy140: - YYDEBUG(140, *YYCURSOR); + yy146: + YYDEBUG(146, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 445 "Zend/zend_ini_scanner.l" -#line 499 "Zend/zend_ini_scanner.l" ++#line 496 "Zend/zend_ini_scanner.l" { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ - char *sc = NULL; + unsigned char *sc = NULL; while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR) { case '\n': @@@ -1932,111 -2038,111 +2035,111 @@@ end_raw_value_chars } RETURN_TOKEN(TC_RAW, yytext, yyleng); } - #line 1936 "Zend/zend_ini_scanner.c" - yy141: - YYDEBUG(141, *YYCURSOR); -#line 2042 "Zend/zend_ini_scanner.c" ++#line 2039 "Zend/zend_ini_scanner.c" + yy147: + YYDEBUG(147, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy140; - if (yych <= '\n') goto yy153; - if (yych <= '\f') goto yy140; - goto yy153; + if (yych <= 0x08) goto yy146; + if (yych <= '\n') goto yy159; + if (yych <= '\f') goto yy146; + goto yy159; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy140; - goto yy153; + if (yych <= 0x1F) goto yy146; + goto yy159; } else { - if (yych == ';') goto yy153; - goto yy140; + if (yych == ';') goto yy159; + goto yy146; } } - yy142: - YYDEBUG(142, *YYCURSOR); + yy148: + YYDEBUG(148, *YYCURSOR); ++YYCURSOR; - yy143: - YYDEBUG(143, *YYCURSOR); + yy149: + YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 486 "Zend/zend_ini_scanner.l" -#line 540 "Zend/zend_ini_scanner.l" ++#line 537 "Zend/zend_ini_scanner.l" { /* End of option value */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 1967 "Zend/zend_ini_scanner.c" - yy144: - YYDEBUG(144, *YYCURSOR); -#line 2073 "Zend/zend_ini_scanner.c" ++#line 2070 "Zend/zend_ini_scanner.c" + yy150: + YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy151; - goto yy143; - yy145: - YYDEBUG(145, *YYCURSOR); + if (yych == '\n') goto yy157; + goto yy149; + yy151: + YYDEBUG(151, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - goto yy147; - yy146: - YYDEBUG(146, *YYCURSOR); + goto yy153; + yy152: + YYDEBUG(152, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - yy147: - YYDEBUG(147, *YYCURSOR); + yy153: + YYDEBUG(153, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy146; + goto yy152; } - if (yych >= '\r') goto yy150; - yy148: - YYDEBUG(148, *YYCURSOR); + if (yych >= '\r') goto yy156; + yy154: + YYDEBUG(154, *YYCURSOR); ++YYCURSOR; - yy149: - YYDEBUG(149, *YYCURSOR); + yy155: + YYDEBUG(155, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 582 "Zend/zend_ini_scanner.l" -#line 636 "Zend/zend_ini_scanner.l" ++#line 633 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 2001 "Zend/zend_ini_scanner.c" - yy150: - YYDEBUG(150, *YYCURSOR); -#line 2107 "Zend/zend_ini_scanner.c" ++#line 2104 "Zend/zend_ini_scanner.c" + yy156: + YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy148; - goto yy149; - yy151: - YYDEBUG(151, *YYCURSOR); + if (yych == '\n') goto yy154; + goto yy155; + yy157: + YYDEBUG(157, *YYCURSOR); yych = *++YYCURSOR; - goto yy143; - yy152: - YYDEBUG(152, *YYCURSOR); + goto yy149; + yy158: + YYDEBUG(158, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - yy153: - YYDEBUG(153, *YYCURSOR); + yy159: + YYDEBUG(159, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy152; + goto yy158; } if (yych <= '\f') { - if (yych == '\n') goto yy151; + if (yych == '\n') goto yy157; } else { - if (yych <= '\r') goto yy155; - if (yych == ';') goto yy146; + if (yych <= '\r') goto yy161; + if (yych == ';') goto yy152; } - YYDEBUG(154, *YYCURSOR); + YYDEBUG(160, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 572 "Zend/zend_ini_scanner.l" -#line 626 "Zend/zend_ini_scanner.l" ++#line 623 "Zend/zend_ini_scanner.l" { /* eat whitespace */ goto restart; } - #line 2035 "Zend/zend_ini_scanner.c" - yy155: - YYDEBUG(155, *YYCURSOR); -#line 2141 "Zend/zend_ini_scanner.c" ++#line 2138 "Zend/zend_ini_scanner.c" + yy161: + YYDEBUG(161, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy151; - goto yy143; + if ((yych = *YYCURSOR) == '\n') goto yy157; + goto yy149; } /* *********************************** */ yyc_ST_SECTION_RAW: @@@ -2079,50 -2185,50 +2182,50 @@@ YYFILL(3); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\n') goto yy160; + if (yych == '\n') goto yy166; } else { - if (yych <= '\r') goto yy160; - if (yych == ']') goto yy162; + if (yych <= '\r') goto yy166; + if (yych == ']') goto yy168; } - YYDEBUG(158, *YYCURSOR); + YYDEBUG(164, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy169; - yy159: - YYDEBUG(159, *YYCURSOR); + goto yy175; + yy165: + YYDEBUG(165, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 482 "Zend/zend_ini_scanner.l" -#line 536 "Zend/zend_ini_scanner.l" ++#line 533 "Zend/zend_ini_scanner.l" { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ RETURN_TOKEN(TC_RAW, yytext, yyleng); } - #line 2099 "Zend/zend_ini_scanner.c" - yy160: - YYDEBUG(160, *YYCURSOR); -#line 2205 "Zend/zend_ini_scanner.c" ++#line 2202 "Zend/zend_ini_scanner.c" + yy166: + YYDEBUG(166, *YYCURSOR); ++YYCURSOR; - YYDEBUG(161, *YYCURSOR); + YYDEBUG(167, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 600 "Zend/zend_ini_scanner.l" -#line 654 "Zend/zend_ini_scanner.l" ++#line 651 "Zend/zend_ini_scanner.l" { return 0; } - #line 2109 "Zend/zend_ini_scanner.c" - yy162: - YYDEBUG(162, *YYCURSOR); -#line 2215 "Zend/zend_ini_scanner.c" ++#line 2212 "Zend/zend_ini_scanner.c" + yy168: + YYDEBUG(168, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy165; - yy163: - YYDEBUG(163, *YYCURSOR); + goto yy171; + yy169: + YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 374 "Zend/zend_ini_scanner.l" -#line 424 "Zend/zend_ini_scanner.l" ++#line 421 "Zend/zend_ini_scanner.l" { /* End of section */ BEGIN(INITIAL); SCNG(lineno)++; return ']'; } - #line 2124 "Zend/zend_ini_scanner.c" - yy164: - YYDEBUG(164, *YYCURSOR); -#line 2230 "Zend/zend_ini_scanner.c" ++#line 2227 "Zend/zend_ini_scanner.c" + yy170: + YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; @@@ -2234,67 -2340,67 +2337,67 @@@ yyc_ST_SECTION_VALUE } } } - yy172: - YYDEBUG(172, *YYCURSOR); + yy178: + YYDEBUG(178, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - goto yy195; - yy173: - YYDEBUG(173, *YYCURSOR); + goto yy201; + yy179: + YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 518 "Zend/zend_ini_scanner.l" -#line 572 "Zend/zend_ini_scanner.l" ++#line 569 "Zend/zend_ini_scanner.l" { /* Get rest as section/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } - #line 2250 "Zend/zend_ini_scanner.c" - yy174: - YYDEBUG(174, *YYCURSOR); -#line 2356 "Zend/zend_ini_scanner.c" ++#line 2353 "Zend/zend_ini_scanner.c" + yy180: + YYDEBUG(180, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy221; - goto yy195; + if (yych == '\t') goto yy227; + goto yy201; } else { - if (yych <= ' ') goto yy221; - if (yych == '"') goto yy223; - goto yy195; + if (yych <= ' ') goto yy227; + if (yych == '"') goto yy229; + goto yy201; } - yy175: - YYDEBUG(175, *YYCURSOR); + yy181: + YYDEBUG(181, *YYCURSOR); ++YYCURSOR; - yy176: - YYDEBUG(176, *YYCURSOR); + yy182: + YYDEBUG(182, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 600 "Zend/zend_ini_scanner.l" -#line 654 "Zend/zend_ini_scanner.l" ++#line 651 "Zend/zend_ini_scanner.l" { return 0; } - #line 2273 "Zend/zend_ini_scanner.c" - yy177: - YYDEBUG(177, *YYCURSOR); -#line 2379 "Zend/zend_ini_scanner.c" ++#line 2376 "Zend/zend_ini_scanner.c" + yy183: + YYDEBUG(183, *YYCURSOR); ++YYCURSOR; - yy178: - YYDEBUG(178, *YYCURSOR); + yy184: + YYDEBUG(184, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 522 "Zend/zend_ini_scanner.l" -#line 576 "Zend/zend_ini_scanner.l" ++#line 573 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } - #line 2285 "Zend/zend_ini_scanner.c" - yy179: - YYDEBUG(179, *YYCURSOR); -#line 2391 "Zend/zend_ini_scanner.c" ++#line 2388 "Zend/zend_ini_scanner.c" + yy185: + YYDEBUG(185, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\\') { - if (yych <= 0x00) goto yy176; - if (yych <= '[') goto yy194; - goto yy199; + if (yych <= 0x00) goto yy182; + if (yych <= '[') goto yy200; + goto yy205; } else { - if (yych == '{') goto yy219; - goto yy194; + if (yych == '{') goto yy225; + goto yy200; } - yy180: - YYDEBUG(180, *YYCURSOR); + yy186: + YYDEBUG(186, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 128) { @@@ -2340,16 -2446,16 +2443,16 @@@ yy189 } } } - yy184: - YYDEBUG(184, *YYCURSOR); + yy190: + YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 496 "Zend/zend_ini_scanner.l" -#line 550 "Zend/zend_ini_scanner.l" ++#line 547 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } - #line 2351 "Zend/zend_ini_scanner.c" - yy185: - YYDEBUG(185, *YYCURSOR); -#line 2457 "Zend/zend_ini_scanner.c" ++#line 2454 "Zend/zend_ini_scanner.c" + yy191: + YYDEBUG(191, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { @@@ -2364,41 -2470,41 +2467,41 @@@ } } else { if (yych <= ':') { - if (yych != '\'') goto yy195; + if (yych != '\'') goto yy201; } else { - if (yych <= ';') goto yy186; - if (yych != ']') goto yy195; + if (yych <= ';') goto yy192; + if (yych != ']') goto yy201; } } - yy186: - YYDEBUG(186, *YYCURSOR); + yy192: + YYDEBUG(192, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 492 "Zend/zend_ini_scanner.l" -#line 546 "Zend/zend_ini_scanner.l" ++#line 543 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } - #line 2381 "Zend/zend_ini_scanner.c" - yy187: - YYDEBUG(187, *YYCURSOR); -#line 2487 "Zend/zend_ini_scanner.c" ++#line 2484 "Zend/zend_ini_scanner.c" + yy193: + YYDEBUG(193, *YYCURSOR); yych = *++YYCURSOR; - goto yy194; - yy188: - YYDEBUG(188, *YYCURSOR); + goto yy200; + yy194: + YYDEBUG(194, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy191; - yy189: - YYDEBUG(189, *YYCURSOR); + goto yy197; + yy195: + YYDEBUG(195, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 374 "Zend/zend_ini_scanner.l" -#line 424 "Zend/zend_ini_scanner.l" ++#line 421 "Zend/zend_ini_scanner.l" { /* End of section */ BEGIN(INITIAL); SCNG(lineno)++; return ']'; } - #line 2400 "Zend/zend_ini_scanner.c" - yy190: - YYDEBUG(190, *YYCURSOR); -#line 2506 "Zend/zend_ini_scanner.c" ++#line 2503 "Zend/zend_ini_scanner.c" + yy196: + YYDEBUG(196, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; @@@ -2700,15 -2806,15 +2803,15 @@@ yy221 ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(216, *YYCURSOR); + YYDEBUG(222, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy215; + goto yy221; } - YYDEBUG(217, *YYCURSOR); + YYDEBUG(223, *YYCURSOR); ++YYCURSOR; - YYDEBUG(218, *YYCURSOR); + YYDEBUG(224, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 365 "Zend/zend_ini_scanner.l" -#line 415 "Zend/zend_ini_scanner.l" ++#line 412 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@@ -2717,20 -2823,20 +2820,20 @@@ } RETURN_TOKEN(TC_RAW, yytext, yyleng); } - #line 2721 "Zend/zend_ini_scanner.c" - yy219: - YYDEBUG(219, *YYCURSOR); -#line 2827 "Zend/zend_ini_scanner.c" ++#line 2824 "Zend/zend_ini_scanner.c" + yy225: + YYDEBUG(225, *YYCURSOR); ++YYCURSOR; - YYDEBUG(220, *YYCURSOR); + YYDEBUG(226, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 398 "Zend/zend_ini_scanner.l" -#line 448 "Zend/zend_ini_scanner.l" ++#line 445 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } - #line 2732 "Zend/zend_ini_scanner.c" - yy221: - YYDEBUG(221, *YYCURSOR); -#line 2838 "Zend/zend_ini_scanner.c" ++#line 2835 "Zend/zend_ini_scanner.c" + yy227: + YYDEBUG(227, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); @@@ -2890,113 -2996,113 +2993,113 @@@ yyc_ST_VALUE case 'v': case 'w': case 'x': - case 'z': goto yy248; + case 'z': goto yy254; case 'F': - case 'f': goto yy250; + case 'f': goto yy256; case 'N': - case 'n': goto yy251; + case 'n': goto yy257; case 'O': - case 'o': goto yy252; + case 'o': goto yy258; case 'T': - case 't': goto yy253; + case 't': goto yy259; case 'Y': - case 'y': goto yy254; - default: goto yy228; + case 'y': goto yy260; + default: goto yy234; } - yy226: - YYDEBUG(226, *YYCURSOR); + yy232: + YYDEBUG(232, *YYCURSOR); ++YYCURSOR; - yy227: - YYDEBUG(227, *YYCURSOR); + yy233: + YYDEBUG(233, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 595 "Zend/zend_ini_scanner.l" -#line 649 "Zend/zend_ini_scanner.l" ++#line 646 "Zend/zend_ini_scanner.l" { /* End of option value (if EOF is reached before EOL */ BEGIN(INITIAL); return END_OF_LINE; } - #line 2918 "Zend/zend_ini_scanner.c" - yy228: - YYDEBUG(228, *YYCURSOR); -#line 3024 "Zend/zend_ini_scanner.c" ++#line 3021 "Zend/zend_ini_scanner.c" + yy234: + YYDEBUG(234, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - goto yy256; - yy229: - YYDEBUG(229, *YYCURSOR); + goto yy262; + yy235: + YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 514 "Zend/zend_ini_scanner.l" -#line 568 "Zend/zend_ini_scanner.l" ++#line 565 "Zend/zend_ini_scanner.l" { /* Get everything else as option/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } - #line 2931 "Zend/zend_ini_scanner.c" - yy230: - YYDEBUG(230, *YYCURSOR); -#line 3037 "Zend/zend_ini_scanner.c" ++#line 3034 "Zend/zend_ini_scanner.c" + yy236: + YYDEBUG(236, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - goto yy306; - yy231: - YYDEBUG(231, *YYCURSOR); + goto yy316; + yy237: + YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 568 "Zend/zend_ini_scanner.l" -#line 622 "Zend/zend_ini_scanner.l" ++#line 619 "Zend/zend_ini_scanner.l" { RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng); } - #line 2944 "Zend/zend_ini_scanner.c" - yy232: - YYDEBUG(232, *YYCURSOR); -#line 3050 "Zend/zend_ini_scanner.c" ++#line 3047 "Zend/zend_ini_scanner.c" + yy238: + YYDEBUG(238, *YYCURSOR); ++YYCURSOR; - yy233: - YYDEBUG(233, *YYCURSOR); + yy239: + YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 486 "Zend/zend_ini_scanner.l" -#line 540 "Zend/zend_ini_scanner.l" ++#line 537 "Zend/zend_ini_scanner.l" { /* End of option value */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 2957 "Zend/zend_ini_scanner.c" - yy234: - YYDEBUG(234, *YYCURSOR); -#line 3063 "Zend/zend_ini_scanner.c" ++#line 3060 "Zend/zend_ini_scanner.c" + yy240: + YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy304; - goto yy233; - yy235: - YYDEBUG(235, *YYCURSOR); + if (yych == '\n') goto yy314; + goto yy239; + yy241: + YYDEBUG(241, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy303; - yy236: - YYDEBUG(236, *YYCURSOR); + goto yy313; + yy242: + YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 504 "Zend/zend_ini_scanner.l" -#line 558 "Zend/zend_ini_scanner.l" ++#line 555 "Zend/zend_ini_scanner.l" { /* Boolean operators */ return yytext[0]; } - #line 2975 "Zend/zend_ini_scanner.c" - yy237: - YYDEBUG(237, *YYCURSOR); -#line 3081 "Zend/zend_ini_scanner.c" ++#line 3078 "Zend/zend_ini_scanner.c" + yy243: + YYDEBUG(243, *YYCURSOR); ++YYCURSOR; - yy238: - YYDEBUG(238, *YYCURSOR); + yy244: + YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 522 "Zend/zend_ini_scanner.l" -#line 576 "Zend/zend_ini_scanner.l" ++#line 573 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } - #line 2987 "Zend/zend_ini_scanner.c" - yy239: - YYDEBUG(239, *YYCURSOR); -#line 3093 "Zend/zend_ini_scanner.c" ++#line 3090 "Zend/zend_ini_scanner.c" + yy245: + YYDEBUG(245, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\\') { - if (yych <= 0x00) goto yy227; - if (yych <= '[') goto yy255; - goto yy262; + if (yych <= 0x00) goto yy233; + if (yych <= '[') goto yy261; + goto yy268; } else { - if (yych == '{') goto yy300; - goto yy255; + if (yych == '{') goto yy310; + goto yy261; } - yy240: - YYDEBUG(240, *YYCURSOR); + yy246: + YYDEBUG(246, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 128) { @@@ -3055,33 -3161,33 +3158,33 @@@ yy249 } } } - yy244: - YYDEBUG(244, *YYCURSOR); + yy250: + YYDEBUG(250, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 496 "Zend/zend_ini_scanner.l" -#line 550 "Zend/zend_ini_scanner.l" ++#line 547 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } - #line 3066 "Zend/zend_ini_scanner.c" - yy245: - YYDEBUG(245, *YYCURSOR); -#line 3172 "Zend/zend_ini_scanner.c" ++#line 3169 "Zend/zend_ini_scanner.c" + yy251: + YYDEBUG(251, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - goto yy284; - yy246: - YYDEBUG(246, *YYCURSOR); + goto yy294; + yy252: + YYDEBUG(252, *YYCURSOR); ++YYCURSOR; - YYDEBUG(247, *YYCURSOR); + YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 508 "Zend/zend_ini_scanner.l" -#line 562 "Zend/zend_ini_scanner.l" ++#line 559 "Zend/zend_ini_scanner.l" { /* Make = used in option value to trigger error */ yyless(0); BEGIN(INITIAL); return END_OF_LINE; } - #line 3083 "Zend/zend_ini_scanner.c" - yy248: - YYDEBUG(248, *YYCURSOR); -#line 3189 "Zend/zend_ini_scanner.c" ++#line 3186 "Zend/zend_ini_scanner.c" + yy254: + YYDEBUG(254, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { @@@ -3119,16 -3225,16 +3222,16 @@@ } } } - yy249: - YYDEBUG(249, *YYCURSOR); + yy255: + YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 492 "Zend/zend_ini_scanner.l" -#line 546 "Zend/zend_ini_scanner.l" ++#line 543 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } - #line 3130 "Zend/zend_ini_scanner.c" - yy250: - YYDEBUG(250, *YYCURSOR); -#line 3236 "Zend/zend_ini_scanner.c" ++#line 3233 "Zend/zend_ini_scanner.c" + yy256: + YYDEBUG(256, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '<') { @@@ -3631,16 -3741,16 +3738,16 @@@ yy271 } } } - yy266: - YYDEBUG(266, *YYCURSOR); + yy272: + YYDEBUG(272, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 418 "Zend/zend_ini_scanner.l" -#line 468 "Zend/zend_ini_scanner.l" ++#line 465 "Zend/zend_ini_scanner.l" { /* TRUE value (when used outside option value/offset this causes parse error!) */ RETURN_TOKEN(BOOL_TRUE, "1", 1); } - #line 3642 "Zend/zend_ini_scanner.c" - yy267: - YYDEBUG(267, *YYCURSOR); -#line 3752 "Zend/zend_ini_scanner.c" ++#line 3749 "Zend/zend_ini_scanner.c" + yy273: + YYDEBUG(273, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -3841,16 -3951,16 +3948,16 @@@ yy278 } } } - yy273: - YYDEBUG(273, *YYCURSOR); + yy279: + YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 422 "Zend/zend_ini_scanner.l" -#line 472 "Zend/zend_ini_scanner.l" ++#line 469 "Zend/zend_ini_scanner.l" { /* FALSE value (when used outside option value/offset this causes parse error!)*/ RETURN_TOKEN(BOOL_FALSE, "", 0); } - #line 3852 "Zend/zend_ini_scanner.c" - yy274: - YYDEBUG(274, *YYCURSOR); -#line 3962 "Zend/zend_ini_scanner.c" ++#line 3959 "Zend/zend_ini_scanner.c" + yy280: + YYDEBUG(280, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -4016,8 -4125,66 +4122,66 @@@ yy284 } } } - yy279: - YYDEBUG(279, *YYCURSOR); + yy285: + YYDEBUG(285, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy263; + } + if (yych <= ')') { + if (yych <= '\f') { + if (yych <= 0x08) { + if (yych >= 0x01) goto yy262; + } else { + if (yych <= '\t') goto yy287; + if (yych >= '\v') goto yy262; + } + } else { + if (yych <= ' ') { + if (yych <= '\r') goto yy286; + if (yych <= 0x1F) goto yy262; + goto yy287; + } else { + if (yych <= '"') goto yy286; + if (yych <= '%') goto yy262; + } + } + } else { + if (yych <= ']') { + if (yych <= ';') { + if (yych <= ':') goto yy262; + } else { + if (yych != '=') goto yy262; + } + } else { + if (yych <= '|') { + if (yych <= '^') goto yy286; + if (yych <= '{') goto yy262; + } else { + if (yych != '~') goto yy262; + } + } + } + yy286: + YYDEBUG(286, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); -#line 476 "Zend/zend_ini_scanner.l" ++#line 473 "Zend/zend_ini_scanner.l" + { + RETURN_TOKEN(NULL_NULL, "", 0); + } -#line 4177 "Zend/zend_ini_scanner.c" ++#line 4174 "Zend/zend_ini_scanner.c" + yy287: + YYDEBUG(287, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(288, *YYCURSOR); + if (yych == '\t') goto yy287; + if (yych == ' ') goto yy287; + goto yy286; + yy289: + YYDEBUG(289, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '=') { @@@ -4223,32 -4390,32 +4387,32 @@@ yy293 ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - yy284: - YYDEBUG(284, *YYCURSOR); + yy294: + YYDEBUG(294, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy283; + goto yy293; } - if (yych >= '\r') goto yy287; - yy285: - YYDEBUG(285, *YYCURSOR); + if (yych >= '\r') goto yy297; + yy295: + YYDEBUG(295, *YYCURSOR); ++YYCURSOR; - yy286: - YYDEBUG(286, *YYCURSOR); + yy296: + YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 582 "Zend/zend_ini_scanner.l" -#line 636 "Zend/zend_ini_scanner.l" ++#line 633 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } - #line 4245 "Zend/zend_ini_scanner.c" - yy287: - YYDEBUG(287, *YYCURSOR); -#line 4412 "Zend/zend_ini_scanner.c" ++#line 4409 "Zend/zend_ini_scanner.c" + yy297: + YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy285; - goto yy286; - yy288: - YYDEBUG(288, *YYCURSOR); + if (yych == '\n') goto yy295; + goto yy296; + yy298: + YYDEBUG(298, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(1); @@@ -4451,15 -4618,15 +4615,15 @@@ yy306 ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(297, *YYCURSOR); + YYDEBUG(307, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy296; + goto yy306; } - YYDEBUG(298, *YYCURSOR); + YYDEBUG(308, *YYCURSOR); ++YYCURSOR; - YYDEBUG(299, *YYCURSOR); + YYDEBUG(309, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 365 "Zend/zend_ini_scanner.l" -#line 415 "Zend/zend_ini_scanner.l" ++#line 412 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@@ -4468,20 -4635,20 +4632,20 @@@ } RETURN_TOKEN(TC_RAW, yytext, yyleng); } - #line 4472 "Zend/zend_ini_scanner.c" - yy300: - YYDEBUG(300, *YYCURSOR); -#line 4639 "Zend/zend_ini_scanner.c" ++#line 4636 "Zend/zend_ini_scanner.c" + yy310: + YYDEBUG(310, *YYCURSOR); ++YYCURSOR; - YYDEBUG(301, *YYCURSOR); + YYDEBUG(311, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 398 "Zend/zend_ini_scanner.l" -#line 448 "Zend/zend_ini_scanner.l" ++#line 445 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } - #line 4483 "Zend/zend_ini_scanner.c" - yy302: - YYDEBUG(302, *YYCURSOR); -#line 4650 "Zend/zend_ini_scanner.c" ++#line 4647 "Zend/zend_ini_scanner.c" + yy312: + YYDEBUG(312, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; @@@ -4602,15 -4769,15 +4766,15 @@@ yyc_ST_VARNAME } } } - yy311: - YYDEBUG(311, *YYCURSOR); + yy321: + YYDEBUG(321, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy318; - yy312: - YYDEBUG(312, *YYCURSOR); + goto yy328; + yy322: + YYDEBUG(322, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 403 "Zend/zend_ini_scanner.l" -#line 453 "Zend/zend_ini_scanner.l" ++#line 450 "Zend/zend_ini_scanner.l" { /* Variable name */ /* Eat leading whitespace */ EAT_LEADING_WHITESPACE(); @@@ -4620,41 -4787,41 +4784,41 @@@ RETURN_TOKEN(TC_VARNAME, yytext, yyleng); } - #line 4624 "Zend/zend_ini_scanner.c" - yy313: - YYDEBUG(313, *YYCURSOR); -#line 4791 "Zend/zend_ini_scanner.c" ++#line 4788 "Zend/zend_ini_scanner.c" + yy323: + YYDEBUG(323, *YYCURSOR); ++YYCURSOR; - YYDEBUG(314, *YYCURSOR); + YYDEBUG(324, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 600 "Zend/zend_ini_scanner.l" -#line 654 "Zend/zend_ini_scanner.l" ++#line 651 "Zend/zend_ini_scanner.l" { return 0; } - #line 4634 "Zend/zend_ini_scanner.c" - yy315: - YYDEBUG(315, *YYCURSOR); -#line 4801 "Zend/zend_ini_scanner.c" ++#line 4798 "Zend/zend_ini_scanner.c" + yy325: + YYDEBUG(325, *YYCURSOR); ++YYCURSOR; - YYDEBUG(316, *YYCURSOR); + YYDEBUG(326, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); - #line 413 "Zend/zend_ini_scanner.l" -#line 463 "Zend/zend_ini_scanner.l" ++#line 460 "Zend/zend_ini_scanner.l" { /* Variable end */ yy_pop_state(TSRMLS_C); return '}'; } - #line 4645 "Zend/zend_ini_scanner.c" - yy317: - YYDEBUG(317, *YYCURSOR); -#line 4812 "Zend/zend_ini_scanner.c" ++#line 4809 "Zend/zend_ini_scanner.c" + yy327: + YYDEBUG(327, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - yy318: - YYDEBUG(318, *YYCURSOR); + yy328: + YYDEBUG(328, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy317; + goto yy327; } - goto yy312; + goto yy322; } } - #line 604 "Zend/zend_ini_scanner.l" -#line 658 "Zend/zend_ini_scanner.l" ++#line 655 "Zend/zend_ini_scanner.l" } diff --cc Zend/zend_ini_scanner.l index 1ed800ce52,54c642c3ab..7c9b382d50 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@@ -131,13 -132,61 +132,59 @@@ ZEND_API zend_ini_scanner_globals ini_s /* Eat trailing whitespace */ #define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X') -#define zend_ini_copy_value(retval, str, len) { \ - Z_STRVAL_P(retval) = zend_strndup(str, len); \ - Z_STRLEN_P(retval) = len; \ - Z_TYPE_P(retval) = IS_STRING; \ -} +#define zend_ini_copy_value(retval, str, len) \ + ZVAL_NEW_STR(retval, zend_string_init(str, len, 1)) + - #define RETURN_TOKEN(type, str, len) { \ - zend_ini_copy_value(ini_lval, str, len); \ - return type; \ + #define RETURN_TOKEN(type, str, len) { \ + if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \ + zend_ini_copy_typed_value(ini_lval, type, str, len); \ + } else { \ + zend_ini_copy_value(ini_lval, str, len); \ + } \ + return type; \ + } + + static inline int convert_to_number(zval *retval, const char *str, const int str_len) + { + zend_uchar type; + int overflow; + long lval; + double dval; + + if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) { + if (type == IS_LONG) { + ZVAL_LONG(retval, lval); + return SUCCESS; + } else if (type == IS_DOUBLE && !overflow) { + ZVAL_DOUBLE(retval, dval); + return SUCCESS; + } + } + + return FAILURE; + } + + static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len) + { + switch (type) { + case BOOL_FALSE: + case BOOL_TRUE: + ZVAL_BOOL(retval, type == BOOL_TRUE); + break; + + case NULL_NULL: + ZVAL_NULL(retval); + break; + + case TC_NUMBER: + if (convert_to_number(retval, str, len) == SUCCESS) { + break; + } + /* intentional fall-through */ + default: + zend_ini_copy_value(retval, str, len); + } } static void _yy_push_state(int new_state TSRMLS_DC)