Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

MFH: Fixed #45384 (parse_ini_file will result in parse error with no …

…trailing

 newline)
  • Loading branch information...
commit 1defd7a9e2464c109354c6db37f08c1f77db9b7c 1 parent 13d7bb0
Arnaud Le Blanc authored August 17, 2008
2  NEWS
@@ -34,6 +34,8 @@ PHP                                                                        NEWS
34 34
   (Derick)
35 35
 - Fixed bug #45447 (Filesystem time functions on Vista and server 2008).
36 36
   (Pierre)
  37
+- Fixed bug #45384 (parse_ini_file will result in parse error with no trailing 
  38
+  newline). (Arnaud)
37 39
 - Fixed bug #45044 (relative paths not resolved correctly). (Dmitry)
38 40
 - Fixed bug #44925 (preg_grep() modifies input array). (Nuno)
39 41
 - Fixed bug #44100 (Inconsistent handling of static array declarations with
234  Zend/zend_ini_scanner.c
... ...
@@ -1,4 +1,4 @@
1  
-/* Generated by re2c 0.13.6.dev on Thu Aug  7 13:22:08 2008 */
  1
+/* Generated by re2c 0.13.5 on Sun Aug 17 22:48:22 2008 */
2 2
 #line 1 "Zend/zend_ini_scanner.l"
3 3
 /*
4 4
    +----------------------------------------------------------------------+
@@ -39,7 +39,9 @@
39 39
 #include "zend_ini_scanner_defs.h"
40 40
 
41 41
 #define YYCTYPE   unsigned char
42  
-#define YYFILL(n) { if (YYCURSOR >= YYLIMIT) return 0; }
  42
+/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
  43
+ * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
  44
+#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
43 45
 #define YYCURSOR  SCNG(yy_cursor)
44 46
 #define YYLIMIT   SCNG(yy_limit)
45 47
 #define YYMARKER  SCNG(yy_marker)
@@ -60,8 +62,8 @@
60 62
 /* perform sanity check. If this message is triggered you should
61 63
    increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
62 64
 #define YYMAXFILL 6
63  
-#if ZEND_MMAP_AHEAD < YYMAXFILL
64  
-# error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL
  65
+#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
  66
+# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
65 67
 #endif
66 68
 
67 69
 
@@ -303,7 +305,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
303 305
 	}
304 306
 
305 307
 
306  
-#line 307 "Zend/zend_ini_scanner.c"
  308
+#line 309 "Zend/zend_ini_scanner.c"
307 309
 {
308 310
 	YYCTYPE yych;
309 311
 	unsigned int yyaccept = 0;
@@ -480,11 +482,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
480 482
 		++YYCURSOR;
481 483
 		YYDEBUG(3, *YYCURSOR);
482 484
 		yyleng = YYCURSOR - SCNG(yy_text);
483  
-#line 493 "Zend/zend_ini_scanner.l"
  485
+#line 495 "Zend/zend_ini_scanner.l"
484 486
 		{
485 487
 	return 0;
486 488
 }
487  
-#line 488 "Zend/zend_ini_scanner.c"
  489
+#line 490 "Zend/zend_ini_scanner.c"
488 490
 yy4:
489 491
 		YYDEBUG(4, *YYCURSOR);
490 492
 		yyaccept = 0;
@@ -493,24 +495,24 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
493 495
 yy5:
494 496
 		YYDEBUG(5, *YYCURSOR);
495 497
 		yyleng = YYCURSOR - SCNG(yy_text);
496  
-#line 472 "Zend/zend_ini_scanner.l"
  498
+#line 474 "Zend/zend_ini_scanner.l"
497 499
 		{
498 500
 	/* eat whitespace */
499 501
 	goto restart;
500 502
 }
501  
-#line 502 "Zend/zend_ini_scanner.c"
  503
+#line 504 "Zend/zend_ini_scanner.c"
502 504
 yy6:
503 505
 		YYDEBUG(6, *YYCURSOR);
504 506
 		++YYCURSOR;
505 507
 yy7:
506 508
 		YYDEBUG(7, *YYCURSOR);
507 509
 		yyleng = YYCURSOR - SCNG(yy_text);
508  
-#line 477 "Zend/zend_ini_scanner.l"
  510
+#line 479 "Zend/zend_ini_scanner.l"
509 511
 		{
510 512
 	SCNG(lineno)++;
511 513
 	return END_OF_LINE;
512 514
 }
513  
-#line 514 "Zend/zend_ini_scanner.c"
  515
+#line 516 "Zend/zend_ini_scanner.c"
514 516
 yy8:
515 517
 		YYDEBUG(8, *YYCURSOR);
516 518
 		yych = *++YYCURSOR;
@@ -521,11 +523,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
521 523
 		++YYCURSOR;
522 524
 		YYDEBUG(10, *YYCURSOR);
523 525
 		yyleng = YYCURSOR - SCNG(yy_text);
524  
-#line 431 "Zend/zend_ini_scanner.l"
  526
+#line 433 "Zend/zend_ini_scanner.l"
525 527
 		{ /* Disallow these chars outside option values */
526 528
 	return yytext[0];
527 529
 }
528  
-#line 529 "Zend/zend_ini_scanner.c"
  530
+#line 531 "Zend/zend_ini_scanner.c"
529 531
 yy11:
530 532
 		YYDEBUG(11, *YYCURSOR);
531 533
 		++YYCURSOR;
@@ -534,11 +536,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
534 536
 yy12:
535 537
 		YYDEBUG(12, *YYCURSOR);
536 538
 		yyleng = YYCURSOR - SCNG(yy_text);
537  
-#line 391 "Zend/zend_ini_scanner.l"
  539
+#line 393 "Zend/zend_ini_scanner.l"
538 540
 		{ /* Get option name */
539 541
 	RETURN_TOKEN(TC_LABEL, yytext, yyleng);
540 542
 }
541  
-#line 542 "Zend/zend_ini_scanner.c"
  543
+#line 544 "Zend/zend_ini_scanner.c"
542 544
 yy13:
543 545
 		YYDEBUG(13, *YYCURSOR);
544 546
 		yyaccept = 1;
@@ -552,7 +554,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
552 554
 yy15:
553 555
 		YYDEBUG(15, *YYCURSOR);
554 556
 		yyleng = YYCURSOR - SCNG(yy_text);
555  
-#line 395 "Zend/zend_ini_scanner.l"
  557
+#line 397 "Zend/zend_ini_scanner.l"
556 558
 		{ /* Start option value */
557 559
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
558 560
 		yy_push_state(ST_RAW TSRMLS_CC);
@@ -561,7 +563,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
561 563
 	}
562 564
 	return '=';
563 565
 }
564  
-#line 565 "Zend/zend_ini_scanner.c"
  566
+#line 567 "Zend/zend_ini_scanner.c"
565 567
 yy16:
566 568
 		YYDEBUG(16, *YYCURSOR);
567 569
 		yych = *++YYCURSOR;
@@ -617,7 +619,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
617 619
 		++YYCURSOR;
618 620
 		YYDEBUG(22, *YYCURSOR);
619 621
 		yyleng = YYCURSOR - SCNG(yy_text);
620  
-#line 329 "Zend/zend_ini_scanner.l"
  622
+#line 331 "Zend/zend_ini_scanner.l"
621 623
 		{ /* Section start */
622 624
 	/* Enter section data lookup state */
623 625
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
@@ -627,7 +629,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
627 629
 	}
628 630
 	return TC_SECTION;
629 631
 }
630  
-#line 631 "Zend/zend_ini_scanner.c"
  632
+#line 633 "Zend/zend_ini_scanner.c"
631 633
 yy23:
632 634
 		YYDEBUG(23, *YYCURSOR);
633 635
 		++YYCURSOR;
@@ -657,7 +659,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
657 659
 		}
658 660
 		YYDEBUG(28, *YYCURSOR);
659 661
 		yyleng = YYCURSOR - SCNG(yy_text);
660  
-#line 354 "Zend/zend_ini_scanner.l"
  662
+#line 356 "Zend/zend_ini_scanner.l"
661 663
 		{ /* Start of option with offset */
662 664
 	/* Eat trailing whitespace and [ */
663 665
 	EAT_TRAILING_WHITESPACE_EX('[');
@@ -667,7 +669,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
667 669
 
668 670
 	RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
669 671
 }
670  
-#line 671 "Zend/zend_ini_scanner.c"
  672
+#line 673 "Zend/zend_ini_scanner.c"
671 673
 yy29:
672 674
 		YYDEBUG(29, *YYCURSOR);
673 675
 		++YYCURSOR;
@@ -679,11 +681,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
679 681
 yy30:
680 682
 		YYDEBUG(30, *YYCURSOR);
681 683
 		yyleng = YYCURSOR - SCNG(yy_text);
682  
-#line 383 "Zend/zend_ini_scanner.l"
  684
+#line 385 "Zend/zend_ini_scanner.l"
683 685
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
684 686
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
685 687
 }
686  
-#line 687 "Zend/zend_ini_scanner.c"
  688
+#line 689 "Zend/zend_ini_scanner.c"
687 689
 yy31:
688 690
 		YYDEBUG(31, *YYCURSOR);
689 691
 		++YYCURSOR;
@@ -721,11 +723,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
721 723
 yy37:
722 724
 		YYDEBUG(37, *YYCURSOR);
723 725
 		yyleng = YYCURSOR - SCNG(yy_text);
724  
-#line 387 "Zend/zend_ini_scanner.l"
  726
+#line 389 "Zend/zend_ini_scanner.l"
725 727
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
726 728
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
727 729
 }
728  
-#line 729 "Zend/zend_ini_scanner.c"
  730
+#line 731 "Zend/zend_ini_scanner.c"
729 731
 yy38:
730 732
 		YYDEBUG(38, *YYCURSOR);
731 733
 		++YYCURSOR;
@@ -820,13 +822,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
820 822
 yy52:
821 823
 		YYDEBUG(52, *YYCURSOR);
822 824
 		yyleng = YYCURSOR - SCNG(yy_text);
823  
-#line 482 "Zend/zend_ini_scanner.l"
  825
+#line 484 "Zend/zend_ini_scanner.l"
824 826
 		{ /* Comment */
825 827
 	BEGIN(INITIAL);
826 828
 	SCNG(lineno)++;
827 829
 	return END_OF_LINE;
828 830
 }
829  
-#line 830 "Zend/zend_ini_scanner.c"
  831
+#line 832 "Zend/zend_ini_scanner.c"
830 832
 yy53:
831 833
 		YYDEBUG(53, *YYCURSOR);
832 834
 		yych = *++YYCURSOR;
@@ -920,12 +922,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
920 922
 yy61:
921 923
 		YYDEBUG(61, *YYCURSOR);
922 924
 		yyleng = YYCURSOR - SCNG(yy_text);
923  
-#line 458 "Zend/zend_ini_scanner.l"
  925
+#line 460 "Zend/zend_ini_scanner.l"
924 926
 		{ /* Escape double quoted string contents */
925 927
 	zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
926 928
 	return TC_QUOTED_STRING;
927 929
 }
928  
-#line 929 "Zend/zend_ini_scanner.c"
  930
+#line 931 "Zend/zend_ini_scanner.c"
929 931
 yy62:
930 932
 		YYDEBUG(62, *YYCURSOR);
931 933
 		++YYCURSOR;
@@ -934,12 +936,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
934 936
 yy63:
935 937
 		YYDEBUG(63, *YYCURSOR);
936 938
 		yyleng = YYCURSOR - SCNG(yy_text);
937  
-#line 463 "Zend/zend_ini_scanner.l"
  939
+#line 465 "Zend/zend_ini_scanner.l"
938 940
 		{ /* Double quoted '"' string ends */
939 941
 	yy_pop_state(TSRMLS_C);
940 942
 	return '"';
941 943
 }
942  
-#line 943 "Zend/zend_ini_scanner.c"
  944
+#line 945 "Zend/zend_ini_scanner.c"
943 945
 yy64:
944 946
 		YYDEBUG(64, *YYCURSOR);
945 947
 		++YYCURSOR;
@@ -954,11 +956,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
954 956
 yy65:
955 957
 		YYDEBUG(65, *YYCURSOR);
956 958
 		yyleng = YYCURSOR - SCNG(yy_text);
957  
-#line 493 "Zend/zend_ini_scanner.l"
  959
+#line 495 "Zend/zend_ini_scanner.l"
958 960
 		{
959 961
 	return 0;
960 962
 }
961  
-#line 962 "Zend/zend_ini_scanner.c"
  963
+#line 964 "Zend/zend_ini_scanner.c"
962 964
 yy66:
963 965
 		YYDEBUG(66, *YYCURSOR);
964 966
 		yych = *++YYCURSOR;
@@ -1043,12 +1045,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1043 1045
 		++YYCURSOR;
1044 1046
 		YYDEBUG(79, *YYCURSOR);
1045 1047
 		yyleng = YYCURSOR - SCNG(yy_text);
1046  
-#line 369 "Zend/zend_ini_scanner.l"
  1048
+#line 371 "Zend/zend_ini_scanner.l"
1047 1049
 		{ /* Variable start */
1048 1050
 	yy_push_state(ST_VARNAME TSRMLS_CC);
1049 1051
 	return TC_DOLLAR_CURLY;
1050 1052
 }
1051  
-#line 1052 "Zend/zend_ini_scanner.c"
  1053
+#line 1054 "Zend/zend_ini_scanner.c"
1052 1054
 yy80:
1053 1055
 		YYDEBUG(80, *YYCURSOR);
1054 1056
 		++YYCURSOR;
@@ -1147,11 +1149,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1147 1149
 yy85:
1148 1150
 		YYDEBUG(85, *YYCURSOR);
1149 1151
 		yyleng = YYCURSOR - SCNG(yy_text);
1150  
-#line 449 "Zend/zend_ini_scanner.l"
  1152
+#line 451 "Zend/zend_ini_scanner.l"
1151 1153
 		{ /* Get rest as section/offset value */
1152 1154
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
1153 1155
 }
1154  
-#line 1155 "Zend/zend_ini_scanner.c"
  1156
+#line 1157 "Zend/zend_ini_scanner.c"
1155 1157
 yy86:
1156 1158
 		YYDEBUG(86, *YYCURSOR);
1157 1159
 		yyaccept = 0;
@@ -1168,23 +1170,23 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1168 1170
 yy88:
1169 1171
 		YYDEBUG(88, *YYCURSOR);
1170 1172
 		yyleng = YYCURSOR - SCNG(yy_text);
1171  
-#line 493 "Zend/zend_ini_scanner.l"
  1173
+#line 495 "Zend/zend_ini_scanner.l"
1172 1174
 		{
1173 1175
 	return 0;
1174 1176
 }
1175  
-#line 1176 "Zend/zend_ini_scanner.c"
  1177
+#line 1178 "Zend/zend_ini_scanner.c"
1176 1178
 yy89:
1177 1179
 		YYDEBUG(89, *YYCURSOR);
1178 1180
 		++YYCURSOR;
1179 1181
 yy90:
1180 1182
 		YYDEBUG(90, *YYCURSOR);
1181 1183
 		yyleng = YYCURSOR - SCNG(yy_text);
1182  
-#line 453 "Zend/zend_ini_scanner.l"
  1184
+#line 455 "Zend/zend_ini_scanner.l"
1183 1185
 		{ /* Double quoted '"' string start */
1184 1186
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
1185 1187
 	return '"';
1186 1188
 }
1187  
-#line 1188 "Zend/zend_ini_scanner.c"
  1189
+#line 1190 "Zend/zend_ini_scanner.c"
1188 1190
 yy91:
1189 1191
 		YYDEBUG(91, *YYCURSOR);
1190 1192
 		yych = *++YYCURSOR;
@@ -1246,11 +1248,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1246 1248
 yy96:
1247 1249
 		YYDEBUG(96, *YYCURSOR);
1248 1250
 		yyleng = YYCURSOR - SCNG(yy_text);
1249  
-#line 427 "Zend/zend_ini_scanner.l"
  1251
+#line 429 "Zend/zend_ini_scanner.l"
1250 1252
 		{ /* Get number option value as string */
1251 1253
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
1252 1254
 }
1253  
-#line 1254 "Zend/zend_ini_scanner.c"
  1255
+#line 1256 "Zend/zend_ini_scanner.c"
1254 1256
 yy97:
1255 1257
 		YYDEBUG(97, *YYCURSOR);
1256 1258
 		yyaccept = 3;
@@ -1276,11 +1278,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1276 1278
 yy98:
1277 1279
 		YYDEBUG(98, *YYCURSOR);
1278 1280
 		yyleng = YYCURSOR - SCNG(yy_text);
1279  
-#line 423 "Zend/zend_ini_scanner.l"
  1281
+#line 425 "Zend/zend_ini_scanner.l"
1280 1282
 		{ /* Get constant option value */
1281 1283
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
1282 1284
 }
1283  
-#line 1284 "Zend/zend_ini_scanner.c"
  1285
+#line 1286 "Zend/zend_ini_scanner.c"
1284 1286
 yy99:
1285 1287
 		YYDEBUG(99, *YYCURSOR);
1286 1288
 		yych = *++YYCURSOR;
@@ -1291,12 +1293,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1291 1293
 yy101:
1292 1294
 		YYDEBUG(101, *YYCURSOR);
1293 1295
 		yyleng = YYCURSOR - SCNG(yy_text);
1294  
-#line 364 "Zend/zend_ini_scanner.l"
  1296
+#line 366 "Zend/zend_ini_scanner.l"
1295 1297
 		{ /* End of section or an option offset */
1296 1298
 	BEGIN(INITIAL);
1297 1299
 	return ']';
1298 1300
 }
1299  
-#line 1300 "Zend/zend_ini_scanner.c"
  1301
+#line 1302 "Zend/zend_ini_scanner.c"
1300 1302
 yy102:
1301 1303
 		YYDEBUG(102, *YYCURSOR);
1302 1304
 		yyaccept = 0;
@@ -1586,7 +1588,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1586 1588
 		++YYCURSOR;
1587 1589
 		YYDEBUG(126, *YYCURSOR);
1588 1590
 		yyleng = YYCURSOR - SCNG(yy_text);
1589  
-#line 339 "Zend/zend_ini_scanner.l"
  1591
+#line 341 "Zend/zend_ini_scanner.l"
1590 1592
 		{ /* Raw string */
1591 1593
 	/* Eat leading and trailing single quotes */
1592 1594
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -1595,18 +1597,18 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1595 1597
 	}
1596 1598
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
1597 1599
 }
1598  
-#line 1599 "Zend/zend_ini_scanner.c"
  1600
+#line 1601 "Zend/zend_ini_scanner.c"
1599 1601
 yy127:
1600 1602
 		YYDEBUG(127, *YYCURSOR);
1601 1603
 		++YYCURSOR;
1602 1604
 		YYDEBUG(128, *YYCURSOR);
1603 1605
 		yyleng = YYCURSOR - SCNG(yy_text);
1604  
-#line 369 "Zend/zend_ini_scanner.l"
  1606
+#line 371 "Zend/zend_ini_scanner.l"
1605 1607
 		{ /* Variable start */
1606 1608
 	yy_push_state(ST_VARNAME TSRMLS_CC);
1607 1609
 	return TC_DOLLAR_CURLY;
1608 1610
 }
1609  
-#line 1610 "Zend/zend_ini_scanner.c"
  1611
+#line 1612 "Zend/zend_ini_scanner.c"
1610 1612
 yy129:
1611 1613
 		YYDEBUG(129, *YYCURSOR);
1612 1614
 		yyaccept = 0;
@@ -1713,7 +1715,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1713 1715
 yy136:
1714 1716
 		YYDEBUG(136, *YYCURSOR);
1715 1717
 		yyleng = YYCURSOR - SCNG(yy_text);
1716  
-#line 404 "Zend/zend_ini_scanner.l"
  1718
+#line 406 "Zend/zend_ini_scanner.l"
1717 1719
 		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
1718 1720
 	/* Eat leading and trailing double quotes */
1719 1721
 	if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
@@ -1722,7 +1724,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1722 1724
 	}
1723 1725
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
1724 1726
 }
1725  
-#line 1726 "Zend/zend_ini_scanner.c"
  1727
+#line 1728 "Zend/zend_ini_scanner.c"
1726 1728
 yy137:
1727 1729
 		YYDEBUG(137, *YYCURSOR);
1728 1730
 		yyaccept = 0;
@@ -1744,13 +1746,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1744 1746
 yy139:
1745 1747
 		YYDEBUG(139, *YYCURSOR);
1746 1748
 		yyleng = YYCURSOR - SCNG(yy_text);
1747  
-#line 417 "Zend/zend_ini_scanner.l"
  1749
+#line 419 "Zend/zend_ini_scanner.l"
1748 1750
 		{ /* End of option value */
1749 1751
 	BEGIN(INITIAL);
1750 1752
 	SCNG(lineno)++;
1751 1753
 	return END_OF_LINE;
1752 1754
 }
1753  
-#line 1754 "Zend/zend_ini_scanner.c"
  1755
+#line 1756 "Zend/zend_ini_scanner.c"
1754 1756
 yy140:
1755 1757
 		YYDEBUG(140, *YYCURSOR);
1756 1758
 		yych = *++YYCURSOR;
@@ -1764,12 +1766,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1764 1766
 yy142:
1765 1767
 		YYDEBUG(142, *YYCURSOR);
1766 1768
 		yyleng = YYCURSOR - SCNG(yy_text);
1767  
-#line 488 "Zend/zend_ini_scanner.l"
  1769
+#line 490 "Zend/zend_ini_scanner.l"
1768 1770
 		{ /* End of option value (if EOF is reached before EOL */
1769 1771
 	BEGIN(INITIAL);
1770 1772
 	return END_OF_LINE;
1771 1773
 }
1772  
-#line 1773 "Zend/zend_ini_scanner.c"
  1774
+#line 1775 "Zend/zend_ini_scanner.c"
1773 1775
 yy143:
1774 1776
 		YYDEBUG(143, *YYCURSOR);
1775 1777
 		yych = *++YYCURSOR;
@@ -1791,13 +1793,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1791 1793
 yy147:
1792 1794
 		YYDEBUG(147, *YYCURSOR);
1793 1795
 		yyleng = YYCURSOR - SCNG(yy_text);
1794  
-#line 482 "Zend/zend_ini_scanner.l"
  1796
+#line 484 "Zend/zend_ini_scanner.l"
1795 1797
 		{ /* Comment */
1796 1798
 	BEGIN(INITIAL);
1797 1799
 	SCNG(lineno)++;
1798 1800
 	return END_OF_LINE;
1799 1801
 }
1800  
-#line 1801 "Zend/zend_ini_scanner.c"
  1802
+#line 1803 "Zend/zend_ini_scanner.c"
1801 1803
 yy148:
1802 1804
 		YYDEBUG(148, *YYCURSOR);
1803 1805
 		yych = *++YYCURSOR;
@@ -1899,21 +1901,21 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1899 1901
 yy158:
1900 1902
 		YYDEBUG(158, *YYCURSOR);
1901 1903
 		yyleng = YYCURSOR - SCNG(yy_text);
1902  
-#line 413 "Zend/zend_ini_scanner.l"
  1904
+#line 415 "Zend/zend_ini_scanner.l"
1903 1905
 		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
1904 1906
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
1905 1907
 }
1906  
-#line 1907 "Zend/zend_ini_scanner.c"
  1908
+#line 1909 "Zend/zend_ini_scanner.c"
1907 1909
 yy159:
1908 1910
 		YYDEBUG(159, *YYCURSOR);
1909 1911
 		++YYCURSOR;
1910 1912
 		YYDEBUG(160, *YYCURSOR);
1911 1913
 		yyleng = YYCURSOR - SCNG(yy_text);
1912  
-#line 493 "Zend/zend_ini_scanner.l"
  1914
+#line 495 "Zend/zend_ini_scanner.l"
1913 1915
 		{
1914 1916
 	return 0;
1915 1917
 }
1916  
-#line 1917 "Zend/zend_ini_scanner.c"
  1918
+#line 1919 "Zend/zend_ini_scanner.c"
1917 1919
 yy161:
1918 1920
 		YYDEBUG(161, *YYCURSOR);
1919 1921
 		++YYCURSOR;
@@ -1922,13 +1924,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
1922 1924
 yy162:
1923 1925
 		YYDEBUG(162, *YYCURSOR);
1924 1926
 		yyleng = YYCURSOR - SCNG(yy_text);
1925  
-#line 348 "Zend/zend_ini_scanner.l"
  1927
+#line 350 "Zend/zend_ini_scanner.l"
1926 1928
 		{ /* End of section */
1927 1929
 	BEGIN(INITIAL);
1928 1930
 	SCNG(lineno)++;
1929 1931
 	return ']';
1930 1932
 }
1931  
-#line 1932 "Zend/zend_ini_scanner.c"
  1933
+#line 1934 "Zend/zend_ini_scanner.c"
1932 1934
 yy163:
1933 1935
 		YYDEBUG(163, *YYCURSOR);
1934 1936
 		++YYCURSOR;
@@ -2049,11 +2051,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2049 2051
 yy172:
2050 2052
 		YYDEBUG(172, *YYCURSOR);
2051 2053
 		yyleng = YYCURSOR - SCNG(yy_text);
2052  
-#line 449 "Zend/zend_ini_scanner.l"
  2054
+#line 451 "Zend/zend_ini_scanner.l"
2053 2055
 		{ /* Get rest as section/offset value */
2054 2056
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
2055 2057
 }
2056  
-#line 2057 "Zend/zend_ini_scanner.c"
  2058
+#line 2059 "Zend/zend_ini_scanner.c"
2057 2059
 yy173:
2058 2060
 		YYDEBUG(173, *YYCURSOR);
2059 2061
 		yyaccept = 0;
@@ -2072,23 +2074,23 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2072 2074
 yy175:
2073 2075
 		YYDEBUG(175, *YYCURSOR);
2074 2076
 		yyleng = YYCURSOR - SCNG(yy_text);
2075  
-#line 493 "Zend/zend_ini_scanner.l"
  2077
+#line 495 "Zend/zend_ini_scanner.l"
2076 2078
 		{
2077 2079
 	return 0;
2078 2080
 }
2079  
-#line 2080 "Zend/zend_ini_scanner.c"
  2081
+#line 2082 "Zend/zend_ini_scanner.c"
2080 2082
 yy176:
2081 2083
 		YYDEBUG(176, *YYCURSOR);
2082 2084
 		++YYCURSOR;
2083 2085
 yy177:
2084 2086
 		YYDEBUG(177, *YYCURSOR);
2085 2087
 		yyleng = YYCURSOR - SCNG(yy_text);
2086  
-#line 453 "Zend/zend_ini_scanner.l"
  2088
+#line 455 "Zend/zend_ini_scanner.l"
2087 2089
 		{ /* Double quoted '"' string start */
2088 2090
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
2089 2091
 	return '"';
2090 2092
 }
2091  
-#line 2092 "Zend/zend_ini_scanner.c"
  2093
+#line 2094 "Zend/zend_ini_scanner.c"
2092 2094
 yy178:
2093 2095
 		YYDEBUG(178, *YYCURSOR);
2094 2096
 		yych = *++YYCURSOR;
@@ -2150,11 +2152,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2150 2152
 yy183:
2151 2153
 		YYDEBUG(183, *YYCURSOR);
2152 2154
 		yyleng = YYCURSOR - SCNG(yy_text);
2153  
-#line 427 "Zend/zend_ini_scanner.l"
  2155
+#line 429 "Zend/zend_ini_scanner.l"
2154 2156
 		{ /* Get number option value as string */
2155 2157
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
2156 2158
 }
2157  
-#line 2158 "Zend/zend_ini_scanner.c"
  2159
+#line 2160 "Zend/zend_ini_scanner.c"
2158 2160
 yy184:
2159 2161
 		YYDEBUG(184, *YYCURSOR);
2160 2162
 		yyaccept = 3;
@@ -2180,11 +2182,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2180 2182
 yy185:
2181 2183
 		YYDEBUG(185, *YYCURSOR);
2182 2184
 		yyleng = YYCURSOR - SCNG(yy_text);
2183  
-#line 423 "Zend/zend_ini_scanner.l"
  2185
+#line 425 "Zend/zend_ini_scanner.l"
2184 2186
 		{ /* Get constant option value */
2185 2187
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
2186 2188
 }
2187  
-#line 2188 "Zend/zend_ini_scanner.c"
  2189
+#line 2190 "Zend/zend_ini_scanner.c"
2188 2190
 yy186:
2189 2191
 		YYDEBUG(186, *YYCURSOR);
2190 2192
 		yych = *++YYCURSOR;
@@ -2197,13 +2199,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2197 2199
 yy188:
2198 2200
 		YYDEBUG(188, *YYCURSOR);
2199 2201
 		yyleng = YYCURSOR - SCNG(yy_text);
2200  
-#line 348 "Zend/zend_ini_scanner.l"
  2202
+#line 350 "Zend/zend_ini_scanner.l"
2201 2203
 		{ /* End of section */
2202 2204
 	BEGIN(INITIAL);
2203 2205
 	SCNG(lineno)++;
2204 2206
 	return ']';
2205 2207
 }
2206  
-#line 2207 "Zend/zend_ini_scanner.c"
  2208
+#line 2209 "Zend/zend_ini_scanner.c"
2207 2209
 yy189:
2208 2210
 		YYDEBUG(189, *YYCURSOR);
2209 2211
 		++YYCURSOR;
@@ -2515,7 +2517,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2515 2517
 		++YYCURSOR;
2516 2518
 		YYDEBUG(217, *YYCURSOR);
2517 2519
 		yyleng = YYCURSOR - SCNG(yy_text);
2518  
-#line 339 "Zend/zend_ini_scanner.l"
  2520
+#line 341 "Zend/zend_ini_scanner.l"
2519 2521
 		{ /* Raw string */
2520 2522
 	/* Eat leading and trailing single quotes */
2521 2523
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -2524,18 +2526,18 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2524 2526
 	}
2525 2527
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
2526 2528
 }
2527  
-#line 2528 "Zend/zend_ini_scanner.c"
  2529
+#line 2530 "Zend/zend_ini_scanner.c"
2528 2530
 yy218:
2529 2531
 		YYDEBUG(218, *YYCURSOR);
2530 2532
 		++YYCURSOR;
2531 2533
 		YYDEBUG(219, *YYCURSOR);
2532 2534
 		yyleng = YYCURSOR - SCNG(yy_text);
2533  
-#line 369 "Zend/zend_ini_scanner.l"
  2535
+#line 371 "Zend/zend_ini_scanner.l"
2534 2536
 		{ /* Variable start */
2535 2537
 	yy_push_state(ST_VARNAME TSRMLS_CC);
2536 2538
 	return TC_DOLLAR_CURLY;
2537 2539
 }
2538  
-#line 2539 "Zend/zend_ini_scanner.c"
  2540
+#line 2541 "Zend/zend_ini_scanner.c"
2539 2541
 yy220:
2540 2542
 		YYDEBUG(220, *YYCURSOR);
2541 2543
 		yyaccept = 0;
@@ -2714,12 +2716,12 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2714 2716
 yy226:
2715 2717
 		YYDEBUG(226, *YYCURSOR);
2716 2718
 		yyleng = YYCURSOR - SCNG(yy_text);
2717  
-#line 488 "Zend/zend_ini_scanner.l"
  2719
+#line 490 "Zend/zend_ini_scanner.l"
2718 2720
 		{ /* End of option value (if EOF is reached before EOL */
2719 2721
 	BEGIN(INITIAL);
2720 2722
 	return END_OF_LINE;
2721 2723
 }
2722  
-#line 2723 "Zend/zend_ini_scanner.c"
  2724
+#line 2725 "Zend/zend_ini_scanner.c"
2723 2725
 yy227:
2724 2726
 		YYDEBUG(227, *YYCURSOR);
2725 2727
 		yyaccept = 0;
@@ -2728,11 +2730,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2728 2730
 yy228:
2729 2731
 		YYDEBUG(228, *YYCURSOR);
2730 2732
 		yyleng = YYCURSOR - SCNG(yy_text);
2731  
-#line 445 "Zend/zend_ini_scanner.l"
  2733
+#line 447 "Zend/zend_ini_scanner.l"
2732 2734
 		{ /* Get everything else as option/offset value */
2733 2735
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
2734 2736
 }
2735  
-#line 2736 "Zend/zend_ini_scanner.c"
  2737
+#line 2738 "Zend/zend_ini_scanner.c"
2736 2738
 yy229:
2737 2739
 		YYDEBUG(229, *YYCURSOR);
2738 2740
 		yyaccept = 1;
@@ -2741,24 +2743,24 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2741 2743
 yy230:
2742 2744
 		YYDEBUG(230, *YYCURSOR);
2743 2745
 		yyleng = YYCURSOR - SCNG(yy_text);
2744  
-#line 468 "Zend/zend_ini_scanner.l"
  2746
+#line 470 "Zend/zend_ini_scanner.l"
2745 2747
 		{
2746 2748
 	RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
2747 2749
 }
2748  
-#line 2749 "Zend/zend_ini_scanner.c"
  2750
+#line 2751 "Zend/zend_ini_scanner.c"
2749 2751
 yy231:
2750 2752
 		YYDEBUG(231, *YYCURSOR);
2751 2753
 		++YYCURSOR;
2752 2754
 yy232:
2753 2755
 		YYDEBUG(232, *YYCURSOR);
2754 2756
 		yyleng = YYCURSOR - SCNG(yy_text);
2755  
-#line 417 "Zend/zend_ini_scanner.l"
  2757
+#line 419 "Zend/zend_ini_scanner.l"
2756 2758
 		{ /* End of option value */
2757 2759
 	BEGIN(INITIAL);
2758 2760
 	SCNG(lineno)++;
2759 2761
 	return END_OF_LINE;
2760 2762
 }
2761  
-#line 2762 "Zend/zend_ini_scanner.c"
  2763
+#line 2764 "Zend/zend_ini_scanner.c"
2762 2764
 yy233:
2763 2765
 		YYDEBUG(233, *YYCURSOR);
2764 2766
 		yych = *++YYCURSOR;
@@ -2772,23 +2774,23 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2772 2774
 yy235:
2773 2775
 		YYDEBUG(235, *YYCURSOR);
2774 2776
 		yyleng = YYCURSOR - SCNG(yy_text);
2775  
-#line 435 "Zend/zend_ini_scanner.l"
  2777
+#line 437 "Zend/zend_ini_scanner.l"
2776 2778
 		{ /* Boolean operators */
2777 2779
 	return yytext[0];
2778 2780
 }
2779  
-#line 2780 "Zend/zend_ini_scanner.c"
  2781
+#line 2782 "Zend/zend_ini_scanner.c"
2780 2782
 yy236:
2781 2783
 		YYDEBUG(236, *YYCURSOR);
2782 2784
 		++YYCURSOR;
2783 2785
 yy237:
2784 2786
 		YYDEBUG(237, *YYCURSOR);
2785 2787
 		yyleng = YYCURSOR - SCNG(yy_text);
2786  
-#line 453 "Zend/zend_ini_scanner.l"
  2788
+#line 455 "Zend/zend_ini_scanner.l"
2787 2789
 		{ /* Double quoted '"' string start */
2788 2790
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
2789 2791
 	return '"';
2790 2792
 }
2791  
-#line 2792 "Zend/zend_ini_scanner.c"
  2793
+#line 2794 "Zend/zend_ini_scanner.c"
2792 2794
 yy238:
2793 2795
 		YYDEBUG(238, *YYCURSOR);
2794 2796
 		yych = *++YYCURSOR;
@@ -2864,11 +2866,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2864 2866
 yy243:
2865 2867
 		YYDEBUG(243, *YYCURSOR);
2866 2868
 		yyleng = YYCURSOR - SCNG(yy_text);
2867  
-#line 427 "Zend/zend_ini_scanner.l"
  2869
+#line 429 "Zend/zend_ini_scanner.l"
2868 2870
 		{ /* Get number option value as string */
2869 2871
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
2870 2872
 }
2871  
-#line 2872 "Zend/zend_ini_scanner.c"
  2873
+#line 2874 "Zend/zend_ini_scanner.c"
2872 2874
 yy244:
2873 2875
 		YYDEBUG(244, *YYCURSOR);
2874 2876
 		yyaccept = 2;
@@ -2879,13 +2881,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2879 2881
 		++YYCURSOR;
2880 2882
 		YYDEBUG(246, *YYCURSOR);
2881 2883
 		yyleng = YYCURSOR - SCNG(yy_text);
2882  
-#line 439 "Zend/zend_ini_scanner.l"
  2884
+#line 441 "Zend/zend_ini_scanner.l"
2883 2885
 		{ /* Make = used in option value to trigger error */
2884 2886
 	yyless(0);
2885 2887
 	BEGIN(INITIAL);
2886 2888
 	return END_OF_LINE;
2887 2889
 }
2888  
-#line 2889 "Zend/zend_ini_scanner.c"
  2890
+#line 2891 "Zend/zend_ini_scanner.c"
2889 2891
 yy247:
2890 2892
 		YYDEBUG(247, *YYCURSOR);
2891 2893
 		yyaccept = 4;
@@ -2921,11 +2923,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
2921 2923
 yy248:
2922 2924
 		YYDEBUG(248, *YYCURSOR);
2923 2925
 		yyleng = YYCURSOR - SCNG(yy_text);
2924  
-#line 423 "Zend/zend_ini_scanner.l"
  2926
+#line 425 "Zend/zend_ini_scanner.l"
2925 2927
 		{ /* Get constant option value */
2926 2928
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
2927 2929
 }
2928  
-#line 2929 "Zend/zend_ini_scanner.c"
  2930
+#line 2931 "Zend/zend_ini_scanner.c"
2929 2931
 yy249:
2930 2932
 		YYDEBUG(249, *YYCURSOR);
2931 2933
 		yyaccept = 4;
@@ -3417,11 +3419,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
3417 3419
 yy265:
3418 3420
 		YYDEBUG(265, *YYCURSOR);
3419 3421
 		yyleng = YYCURSOR - SCNG(yy_text);
3420  
-#line 383 "Zend/zend_ini_scanner.l"
  3422
+#line 385 "Zend/zend_ini_scanner.l"
3421 3423
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
3422 3424
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
3423 3425
 }
3424  
-#line 3425 "Zend/zend_ini_scanner.c"
  3426
+#line 3427 "Zend/zend_ini_scanner.c"
3425 3427
 yy266:
3426 3428
 		YYDEBUG(266, *YYCURSOR);
3427 3429
 		++YYCURSOR;
@@ -3621,11 +3623,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
3621 3623
 yy272:
3622 3624
 		YYDEBUG(272, *YYCURSOR);
3623 3625
 		yyleng = YYCURSOR - SCNG(yy_text);
3624  
-#line 387 "Zend/zend_ini_scanner.l"
  3626
+#line 389 "Zend/zend_ini_scanner.l"
3625 3627
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
3626 3628
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
3627 3629
 }
3628  
-#line 3629 "Zend/zend_ini_scanner.c"
  3630
+#line 3631 "Zend/zend_ini_scanner.c"
3629 3631
 yy273:
3630 3632
 		YYDEBUG(273, *YYCURSOR);
3631 3633
 		++YYCURSOR;
@@ -4001,13 +4003,13 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4001 4003
 yy285:
4002 4004
 		YYDEBUG(285, *YYCURSOR);
4003 4005
 		yyleng = YYCURSOR - SCNG(yy_text);
4004  
-#line 482 "Zend/zend_ini_scanner.l"
  4006
+#line 484 "Zend/zend_ini_scanner.l"
4005 4007
 		{ /* Comment */
4006 4008
 	BEGIN(INITIAL);
4007 4009
 	SCNG(lineno)++;
4008 4010
 	return END_OF_LINE;
4009 4011
 }
4010  
-#line 4011 "Zend/zend_ini_scanner.c"
  4012
+#line 4013 "Zend/zend_ini_scanner.c"
4011 4013
 yy286:
4012 4014
 		YYDEBUG(286, *YYCURSOR);
4013 4015
 		yych = *++YYCURSOR;
@@ -4219,7 +4221,7 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4219 4221
 		++YYCURSOR;
4220 4222
 		YYDEBUG(298, *YYCURSOR);
4221 4223
 		yyleng = YYCURSOR - SCNG(yy_text);
4222  
-#line 339 "Zend/zend_ini_scanner.l"
  4224
+#line 341 "Zend/zend_ini_scanner.l"
4223 4225
 		{ /* Raw string */
4224 4226
 	/* Eat leading and trailing single quotes */
4225 4227
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -4228,18 +4230,18 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4228 4230
 	}
4229 4231
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
4230 4232
 }
4231  
-#line 4232 "Zend/zend_ini_scanner.c"
  4233
+#line 4234 "Zend/zend_ini_scanner.c"
4232 4234
 yy299:
4233 4235
 		YYDEBUG(299, *YYCURSOR);
4234 4236
 		++YYCURSOR;
4235 4237
 		YYDEBUG(300, *YYCURSOR);
4236 4238
 		yyleng = YYCURSOR - SCNG(yy_text);
4237  
-#line 369 "Zend/zend_ini_scanner.l"
  4239
+#line 371 "Zend/zend_ini_scanner.l"
4238 4240
 		{ /* Variable start */
4239 4241
 	yy_push_state(ST_VARNAME TSRMLS_CC);
4240 4242
 	return TC_DOLLAR_CURLY;
4241 4243
 }
4242  
-#line 4243 "Zend/zend_ini_scanner.c"
  4244
+#line 4245 "Zend/zend_ini_scanner.c"
4243 4245
 yy301:
4244 4246
 		YYDEBUG(301, *YYCURSOR);
4245 4247
 		++YYCURSOR;
@@ -4345,11 +4347,11 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4345 4347
 		++YYCURSOR;
4346 4348
 		YYDEBUG(311, *YYCURSOR);
4347 4349
 		yyleng = YYCURSOR - SCNG(yy_text);
4348  
-#line 493 "Zend/zend_ini_scanner.l"
  4350
+#line 495 "Zend/zend_ini_scanner.l"
4349 4351
 		{
4350 4352
 	return 0;
4351 4353
 }
4352  
-#line 4353 "Zend/zend_ini_scanner.c"
  4354
+#line 4355 "Zend/zend_ini_scanner.c"
4353 4355
 yy312:
4354 4356
 		YYDEBUG(312, *YYCURSOR);
4355 4357
 		++YYCURSOR;
@@ -4358,22 +4360,22 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4358 4360
 yy313:
4359 4361
 		YYDEBUG(313, *YYCURSOR);
4360 4362
 		yyleng = YYCURSOR - SCNG(yy_text);
4361  
-#line 374 "Zend/zend_ini_scanner.l"
  4363
+#line 376 "Zend/zend_ini_scanner.l"
4362 4364
 		{ /* Variable name */
4363 4365
 	RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
4364 4366
 }
4365  
-#line 4366 "Zend/zend_ini_scanner.c"
  4367
+#line 4368 "Zend/zend_ini_scanner.c"
4366 4368
 yy314:
4367 4369
 		YYDEBUG(314, *YYCURSOR);
4368 4370
 		++YYCURSOR;
4369 4371
 		YYDEBUG(315, *YYCURSOR);
4370 4372
 		yyleng = YYCURSOR - SCNG(yy_text);
4371  
-#line 378 "Zend/zend_ini_scanner.l"
  4373
+#line 380 "Zend/zend_ini_scanner.l"
4372 4374
 		{ /* Variable end */
4373 4375
 	yy_pop_state(TSRMLS_C);
4374 4376
 	return '}';
4375 4377
 }
4376  
-#line 4377 "Zend/zend_ini_scanner.c"
  4378
+#line 4379 "Zend/zend_ini_scanner.c"
4377 4379
 yy316:
4378 4380
 		YYDEBUG(316, *YYCURSOR);
4379 4381
 		++YYCURSOR;
@@ -4387,6 +4389,6 @@ int ini_lex(zval *ini_lval TSRMLS_DC)
4387 4389
 		goto yy313;
4388 4390
 	}
4389 4391
 }
4390  
-#line 497 "Zend/zend_ini_scanner.l"
  4392
+#line 499 "Zend/zend_ini_scanner.l"
4391 4393
 
4392 4394
 }
8  Zend/zend_ini_scanner.l
@@ -37,7 +37,9 @@
37 37
 #include "zend_ini_scanner_defs.h"
38 38
 
39 39
 #define YYCTYPE   unsigned char
40  
-#define YYFILL(n) { if (YYCURSOR >= YYLIMIT) return 0; }
  40
+/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
  41
+ * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
  42
+#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
41 43
 #define YYCURSOR  SCNG(yy_cursor)
42 44
 #define YYLIMIT   SCNG(yy_limit)
43 45
 #define YYMARKER  SCNG(yy_marker)
@@ -58,8 +60,8 @@
58 60
 /* perform sanity check. If this message is triggered you should
59 61
    increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
60 62
 /*!max:re2c */
61  
-#if ZEND_MMAP_AHEAD < YYMAXFILL
62  
-# error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL
  63
+#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
  64
+# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
63 65
 #endif
64 66
 
65 67
 
2  Zend/zend_ini_scanner_defs.h
... ...
@@ -1,4 +1,4 @@
1  
-/* Generated by re2c 0.13.6.dev on Thu Aug  7 13:22:08 2008 */
  1
+/* Generated by re2c 0.13.5 on Sun Aug 17 22:48:22 2008 */
2 2
 #line 3 "Zend/zend_ini_scanner_defs.h"
3 3
 
4 4
 enum YYCONDTYPE {

0 notes on commit 1defd7a

Please sign in to comment.
Something went wrong with that request. Please try again.