cvs: ZendEngine2(PHP_5_3) / zend_ini_scanner.c zend_ini_scanner.l zend_ini_scanner_defs.h

[email protected] ("Scott MacVicar")
Newsgroups php.zend-engine.cvs
Message-ID <cvsscottmac1230126571@cvsserver>
scottmac		Wed Dec 24 13:49:31 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /ZendEngine2	zend_ini_scanner.c zend_ini_scanner_defs.h 
                	zend_ini_scanner.l 
  Log:
  MFH Fix bug #45991 - UTF-8 BOM breaks ini parser
scottmac-20081224134931.txt (text/plain, 24.6 KB)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner.c?r1=1.1.2.12&r2=1.1.2.13&diff_format=u
Index: ZendEngine2/zend_ini_scanner.c
diff -u ZendEngine2/zend_ini_scanner.c:1.1.2.12 ZendEngine2/zend_ini_scanner.c:1.1.2.13
--- ZendEngine2/zend_ini_scanner.c:1.1.2.12	Wed Nov  5 21:36:11 2008
+++ ZendEngine2/zend_ini_scanner.c	Wed Dec 24 13:49:30 2008
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:51 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:47:34 2008 */
 #line 1 "Zend/zend_ini_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -22,7 +22,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_ini_scanner.c,v 1.1.2.12 2008/11/05 21:36:11 lbarnaud Exp $ */
+/* $Id: zend_ini_scanner.c,v 1.1.2.13 2008/12/24 13:49:30 scottmac Exp $ */
 
 #include <errno.h>
 #include "zend.h"
@@ -293,8 +293,15 @@
 		return 0;
 	}
 
+	/* Eat any UTF-8 BOM we find in the first 3 bytes */
+	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
+		if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
+			YYCURSOR += 3;
+			goto restart;
+		}
+	}
 
-#line 298 "Zend/zend_ini_scanner.c"
+#line 305 "Zend/zend_ini_scanner.c"
 {
 	YYCTYPE yych;
 	unsigned int yyaccept = 0;
@@ -473,11 +480,11 @@
 		++YYCURSOR;
 		YYDEBUG(3, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 481 "Zend/zend_ini_scanner.c"
+#line 488 "Zend/zend_ini_scanner.c"
 yy4:
 		YYDEBUG(4, *YYCURSOR);
 		yyaccept = 0;
@@ -486,24 +493,24 @@
 yy5:
 		YYDEBUG(5, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 467 "Zend/zend_ini_scanner.l"
+#line 474 "Zend/zend_ini_scanner.l"
 		{
 	/* eat whitespace */
 	goto restart;
 }
-#line 495 "Zend/zend_ini_scanner.c"
+#line 502 "Zend/zend_ini_scanner.c"
 yy6:
 		YYDEBUG(6, *YYCURSOR);
 		++YYCURSOR;
 yy7:
 		YYDEBUG(7, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 472 "Zend/zend_ini_scanner.l"
+#line 479 "Zend/zend_ini_scanner.l"
 		{
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 507 "Zend/zend_ini_scanner.c"
+#line 514 "Zend/zend_ini_scanner.c"
 yy8:
 		YYDEBUG(8, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -514,11 +521,11 @@
 		++YYCURSOR;
 		YYDEBUG(10, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 422 "Zend/zend_ini_scanner.l"
+#line 429 "Zend/zend_ini_scanner.l"
 		{ /* Disallow these chars outside option values */
 	return yytext[0];
 }
-#line 522 "Zend/zend_ini_scanner.c"
+#line 529 "Zend/zend_ini_scanner.c"
 yy11:
 		YYDEBUG(11, *YYCURSOR);
 		yyaccept = 1;
@@ -532,11 +539,11 @@
 yy13:
 		YYDEBUG(13, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 382 "Zend/zend_ini_scanner.l"
+#line 389 "Zend/zend_ini_scanner.l"
 		{ /* Get option name */
 	RETURN_TOKEN(TC_LABEL, yytext, yyleng);
 }
-#line 540 "Zend/zend_ini_scanner.c"
+#line 547 "Zend/zend_ini_scanner.c"
 yy14:
 		YYDEBUG(14, *YYCURSOR);
 		yyaccept = 1;
@@ -550,7 +557,7 @@
 yy16:
 		YYDEBUG(16, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 386 "Zend/zend_ini_scanner.l"
+#line 393 "Zend/zend_ini_scanner.l"
 		{ /* Start option value */
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
 		yy_push_state(ST_RAW TSRMLS_CC);
@@ -559,7 +566,7 @@
 	}
 	return '=';
 }
-#line 563 "Zend/zend_ini_scanner.c"
+#line 570 "Zend/zend_ini_scanner.c"
 yy17:
 		YYDEBUG(17, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -615,7 +622,7 @@
 		++YYCURSOR;
 		YYDEBUG(23, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 320 "Zend/zend_ini_scanner.l"
+#line 327 "Zend/zend_ini_scanner.l"
 		{ /* Section start */
 	/* Enter section data lookup state */
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
@@ -625,7 +632,7 @@
 	}
 	return TC_SECTION;
 }
-#line 629 "Zend/zend_ini_scanner.c"
+#line 636 "Zend/zend_ini_scanner.c"
 yy24:
 		YYDEBUG(24, *YYCURSOR);
 		++YYCURSOR;
@@ -655,7 +662,7 @@
 		}
 		YYDEBUG(29, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 345 "Zend/zend_ini_scanner.l"
+#line 352 "Zend/zend_ini_scanner.l"
 		{ /* Start of option with offset */
 	/* Eat trailing whitespace and [ */
 	EAT_TRAILING_WHITESPACE_EX('[');
@@ -665,7 +672,7 @@
 
 	RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
 }
-#line 669 "Zend/zend_ini_scanner.c"
+#line 676 "Zend/zend_ini_scanner.c"
 yy30:
 		YYDEBUG(30, *YYCURSOR);
 		++YYCURSOR;
@@ -677,11 +684,11 @@
 yy31:
 		YYDEBUG(31, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 374 "Zend/zend_ini_scanner.l"
+#line 381 "Zend/zend_ini_scanner.l"
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 685 "Zend/zend_ini_scanner.c"
+#line 692 "Zend/zend_ini_scanner.c"
 yy32:
 		YYDEBUG(32, *YYCURSOR);
 		++YYCURSOR;
@@ -719,11 +726,11 @@
 yy38:
 		YYDEBUG(38, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 378 "Zend/zend_ini_scanner.l"
+#line 385 "Zend/zend_ini_scanner.l"
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 727 "Zend/zend_ini_scanner.c"
+#line 734 "Zend/zend_ini_scanner.c"
 yy39:
 		YYDEBUG(39, *YYCURSOR);
 		++YYCURSOR;
@@ -818,13 +825,13 @@
 yy53:
 		YYDEBUG(53, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 828 "Zend/zend_ini_scanner.c"
+#line 835 "Zend/zend_ini_scanner.c"
 yy54:
 		YYDEBUG(54, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -846,14 +853,14 @@
 yy58:
 		YYDEBUG(58, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 483 "Zend/zend_ini_scanner.l"
+#line 490 "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 857 "Zend/zend_ini_scanner.c"
+#line 864 "Zend/zend_ini_scanner.c"
 yy59:
 		YYDEBUG(59, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -950,7 +957,7 @@
 yy67:
 		YYDEBUG(67, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 449 "Zend/zend_ini_scanner.l"
+#line 456 "Zend/zend_ini_scanner.l"
 		{ /* Escape double quoted string contents */
 	if(yyleng > 1 && yytext[yyleng-1] == '"' && yytext[yyleng-2] == '\\') {
 		yyless(yyleng-1);
@@ -959,7 +966,7 @@
 	zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
 	return TC_QUOTED_STRING;
 }
-#line 963 "Zend/zend_ini_scanner.c"
+#line 970 "Zend/zend_ini_scanner.c"
 yy68:
 		YYDEBUG(68, *YYCURSOR);
 		++YYCURSOR;
@@ -968,12 +975,12 @@
 yy69:
 		YYDEBUG(69, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 458 "Zend/zend_ini_scanner.l"
+#line 465 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string ends */
 	yy_pop_state(TSRMLS_C);
 	return '"';
 }
-#line 977 "Zend/zend_ini_scanner.c"
+#line 984 "Zend/zend_ini_scanner.c"
 yy70:
 		YYDEBUG(70, *YYCURSOR);
 		++YYCURSOR;
@@ -988,11 +995,11 @@
 yy71:
 		YYDEBUG(71, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 996 "Zend/zend_ini_scanner.c"
+#line 1003 "Zend/zend_ini_scanner.c"
 yy72:
 		YYDEBUG(72, *YYCURSOR);
 		yyaccept = 1;
@@ -1108,12 +1115,12 @@
 		++YYCURSOR;
 		YYDEBUG(88, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 1117 "Zend/zend_ini_scanner.c"
+#line 1124 "Zend/zend_ini_scanner.c"
 yy89:
 		YYDEBUG(89, *YYCURSOR);
 		++YYCURSOR;
@@ -1212,11 +1219,11 @@
 yy94:
 		YYDEBUG(94, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 440 "Zend/zend_ini_scanner.l"
+#line 447 "Zend/zend_ini_scanner.l"
 		{ /* Get rest as section/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 1220 "Zend/zend_ini_scanner.c"
+#line 1227 "Zend/zend_ini_scanner.c"
 yy95:
 		YYDEBUG(95, *YYCURSOR);
 		yyaccept = 0;
@@ -1233,23 +1240,23 @@
 yy97:
 		YYDEBUG(97, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 1241 "Zend/zend_ini_scanner.c"
+#line 1248 "Zend/zend_ini_scanner.c"
 yy98:
 		YYDEBUG(98, *YYCURSOR);
 		++YYCURSOR;
 yy99:
 		YYDEBUG(99, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 1253 "Zend/zend_ini_scanner.c"
+#line 1260 "Zend/zend_ini_scanner.c"
 yy100:
 		YYDEBUG(100, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1311,11 +1318,11 @@
 yy105:
 		YYDEBUG(105, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 1319 "Zend/zend_ini_scanner.c"
+#line 1326 "Zend/zend_ini_scanner.c"
 yy106:
 		YYDEBUG(106, *YYCURSOR);
 		yyaccept = 3;
@@ -1341,11 +1348,11 @@
 yy107:
 		YYDEBUG(107, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 1349 "Zend/zend_ini_scanner.c"
+#line 1356 "Zend/zend_ini_scanner.c"
 yy108:
 		YYDEBUG(108, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1356,12 +1363,12 @@
 yy110:
 		YYDEBUG(110, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 355 "Zend/zend_ini_scanner.l"
+#line 362 "Zend/zend_ini_scanner.l"
 		{ /* End of section or an option offset */
 	BEGIN(INITIAL);
 	return ']';
 }
-#line 1365 "Zend/zend_ini_scanner.c"
+#line 1372 "Zend/zend_ini_scanner.c"
 yy111:
 		YYDEBUG(111, *YYCURSOR);
 		yyaccept = 0;
@@ -1651,7 +1658,7 @@
 		++YYCURSOR;
 		YYDEBUG(135, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -1660,18 +1667,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1664 "Zend/zend_ini_scanner.c"
+#line 1671 "Zend/zend_ini_scanner.c"
 yy136:
 		YYDEBUG(136, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(137, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 1675 "Zend/zend_ini_scanner.c"
+#line 1682 "Zend/zend_ini_scanner.c"
 yy138:
 		YYDEBUG(138, *YYCURSOR);
 		yyaccept = 0;
@@ -1778,7 +1785,7 @@
 yy145:
 		YYDEBUG(145, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 395 "Zend/zend_ini_scanner.l"
+#line 402 "Zend/zend_ini_scanner.l"
 		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
 	/* Eat leading and trailing double quotes */
 	if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
@@ -1787,7 +1794,7 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1791 "Zend/zend_ini_scanner.c"
+#line 1798 "Zend/zend_ini_scanner.c"
 yy146:
 		YYDEBUG(146, *YYCURSOR);
 		yyaccept = 0;
@@ -1809,13 +1816,13 @@
 yy148:
 		YYDEBUG(148, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 408 "Zend/zend_ini_scanner.l"
+#line 415 "Zend/zend_ini_scanner.l"
 		{ /* End of option value */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 1819 "Zend/zend_ini_scanner.c"
+#line 1826 "Zend/zend_ini_scanner.c"
 yy149:
 		YYDEBUG(149, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1829,12 +1836,12 @@
 yy151:
 		YYDEBUG(151, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 490 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{ /* End of option value (if EOF is reached before EOL */
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 1838 "Zend/zend_ini_scanner.c"
+#line 1845 "Zend/zend_ini_scanner.c"
 yy152:
 		YYDEBUG(152, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1856,13 +1863,13 @@
 yy156:
 		YYDEBUG(156, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 1866 "Zend/zend_ini_scanner.c"
+#line 1873 "Zend/zend_ini_scanner.c"
 yy157:
 		YYDEBUG(157, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1964,21 +1971,21 @@
 yy167:
 		YYDEBUG(167, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 404 "Zend/zend_ini_scanner.l"
+#line 411 "Zend/zend_ini_scanner.l"
 		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1972 "Zend/zend_ini_scanner.c"
+#line 1979 "Zend/zend_ini_scanner.c"
 yy168:
 		YYDEBUG(168, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(169, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 1982 "Zend/zend_ini_scanner.c"
+#line 1989 "Zend/zend_ini_scanner.c"
 yy170:
 		YYDEBUG(170, *YYCURSOR);
 		++YYCURSOR;
@@ -1987,13 +1994,13 @@
 yy171:
 		YYDEBUG(171, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 339 "Zend/zend_ini_scanner.l"
+#line 346 "Zend/zend_ini_scanner.l"
 		{ /* End of section */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return ']';
 }
-#line 1997 "Zend/zend_ini_scanner.c"
+#line 2004 "Zend/zend_ini_scanner.c"
 yy172:
 		YYDEBUG(172, *YYCURSOR);
 		++YYCURSOR;
@@ -2114,11 +2121,11 @@
 yy181:
 		YYDEBUG(181, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 440 "Zend/zend_ini_scanner.l"
+#line 447 "Zend/zend_ini_scanner.l"
 		{ /* Get rest as section/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2122 "Zend/zend_ini_scanner.c"
+#line 2129 "Zend/zend_ini_scanner.c"
 yy182:
 		YYDEBUG(182, *YYCURSOR);
 		yyaccept = 0;
@@ -2137,23 +2144,23 @@
 yy184:
 		YYDEBUG(184, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 2145 "Zend/zend_ini_scanner.c"
+#line 2152 "Zend/zend_ini_scanner.c"
 yy185:
 		YYDEBUG(185, *YYCURSOR);
 		++YYCURSOR;
 yy186:
 		YYDEBUG(186, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 2157 "Zend/zend_ini_scanner.c"
+#line 2164 "Zend/zend_ini_scanner.c"
 yy187:
 		YYDEBUG(187, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2215,11 +2222,11 @@
 yy192:
 		YYDEBUG(192, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2223 "Zend/zend_ini_scanner.c"
+#line 2230 "Zend/zend_ini_scanner.c"
 yy193:
 		YYDEBUG(193, *YYCURSOR);
 		yyaccept = 3;
@@ -2245,11 +2252,11 @@
 yy194:
 		YYDEBUG(194, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2253 "Zend/zend_ini_scanner.c"
+#line 2260 "Zend/zend_ini_scanner.c"
 yy195:
 		YYDEBUG(195, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2262,13 +2269,13 @@
 yy197:
 		YYDEBUG(197, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 339 "Zend/zend_ini_scanner.l"
+#line 346 "Zend/zend_ini_scanner.l"
 		{ /* End of section */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return ']';
 }
-#line 2272 "Zend/zend_ini_scanner.c"
+#line 2279 "Zend/zend_ini_scanner.c"
 yy198:
 		YYDEBUG(198, *YYCURSOR);
 		++YYCURSOR;
@@ -2580,7 +2587,7 @@
 		++YYCURSOR;
 		YYDEBUG(226, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -2589,18 +2596,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 2593 "Zend/zend_ini_scanner.c"
+#line 2600 "Zend/zend_ini_scanner.c"
 yy227:
 		YYDEBUG(227, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(228, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 2604 "Zend/zend_ini_scanner.c"
+#line 2611 "Zend/zend_ini_scanner.c"
 yy229:
 		YYDEBUG(229, *YYCURSOR);
 		yyaccept = 0;
@@ -2779,12 +2786,12 @@
 yy235:
 		YYDEBUG(235, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 490 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{ /* End of option value (if EOF is reached before EOL */
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 2788 "Zend/zend_ini_scanner.c"
+#line 2795 "Zend/zend_ini_scanner.c"
 yy236:
 		YYDEBUG(236, *YYCURSOR);
 		yyaccept = 0;
@@ -2793,11 +2800,11 @@
 yy237:
 		YYDEBUG(237, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 436 "Zend/zend_ini_scanner.l"
+#line 443 "Zend/zend_ini_scanner.l"
 		{ /* Get everything else as option/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2801 "Zend/zend_ini_scanner.c"
+#line 2808 "Zend/zend_ini_scanner.c"
 yy238:
 		YYDEBUG(238, *YYCURSOR);
 		yyaccept = 1;
@@ -2806,24 +2813,24 @@
 yy239:
 		YYDEBUG(239, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 463 "Zend/zend_ini_scanner.l"
+#line 470 "Zend/zend_ini_scanner.l"
 		{
 	RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
 }
-#line 2814 "Zend/zend_ini_scanner.c"
+#line 2821 "Zend/zend_ini_scanner.c"
 yy240:
 		YYDEBUG(240, *YYCURSOR);
 		++YYCURSOR;
 yy241:
 		YYDEBUG(241, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 408 "Zend/zend_ini_scanner.l"
+#line 415 "Zend/zend_ini_scanner.l"
 		{ /* End of option value */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 2827 "Zend/zend_ini_scanner.c"
+#line 2834 "Zend/zend_ini_scanner.c"
 yy242:
 		YYDEBUG(242, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2837,23 +2844,23 @@
 yy244:
 		YYDEBUG(244, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 426 "Zend/zend_ini_scanner.l"
+#line 433 "Zend/zend_ini_scanner.l"
 		{ /* Boolean operators */
 	return yytext[0];
 }
-#line 2845 "Zend/zend_ini_scanner.c"
+#line 2852 "Zend/zend_ini_scanner.c"
 yy245:
 		YYDEBUG(245, *YYCURSOR);
 		++YYCURSOR;
 yy246:
 		YYDEBUG(246, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 2857 "Zend/zend_ini_scanner.c"
+#line 2864 "Zend/zend_ini_scanner.c"
 yy247:
 		YYDEBUG(247, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2929,11 +2936,11 @@
 yy252:
 		YYDEBUG(252, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2937 "Zend/zend_ini_scanner.c"
+#line 2944 "Zend/zend_ini_scanner.c"
 yy253:
 		YYDEBUG(253, *YYCURSOR);
 		yyaccept = 2;
@@ -2944,13 +2951,13 @@
 		++YYCURSOR;
 		YYDEBUG(255, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 430 "Zend/zend_ini_scanner.l"
+#line 437 "Zend/zend_ini_scanner.l"
 		{ /* Make = used in option value to trigger error */
 	yyless(0);
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 2954 "Zend/zend_ini_scanner.c"
+#line 2961 "Zend/zend_ini_scanner.c"
 yy256:
 		YYDEBUG(256, *YYCURSOR);
 		yyaccept = 4;
@@ -2986,11 +2993,11 @@
 yy257:
 		YYDEBUG(257, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2994 "Zend/zend_ini_scanner.c"
+#line 3001 "Zend/zend_ini_scanner.c"
 yy258:
 		YYDEBUG(258, *YYCURSOR);
 		yyaccept = 4;
@@ -3482,11 +3489,11 @@
 yy274:
 		YYDEBUG(274, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 374 "Zend/zend_ini_scanner.l"
+#line 381 "Zend/zend_ini_scanner.l"
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 3490 "Zend/zend_ini_scanner.c"
+#line 3497 "Zend/zend_ini_scanner.c"
 yy275:
 		YYDEBUG(275, *YYCURSOR);
 		++YYCURSOR;
@@ -3686,11 +3693,11 @@
 yy281:
 		YYDEBUG(281, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 378 "Zend/zend_ini_scanner.l"
+#line 385 "Zend/zend_ini_scanner.l"
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 3694 "Zend/zend_ini_scanner.c"
+#line 3701 "Zend/zend_ini_scanner.c"
 yy282:
 		YYDEBUG(282, *YYCURSOR);
 		++YYCURSOR;
@@ -4066,13 +4073,13 @@
 yy294:
 		YYDEBUG(294, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 4076 "Zend/zend_ini_scanner.c"
+#line 4083 "Zend/zend_ini_scanner.c"
 yy295:
 		YYDEBUG(295, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -4284,7 +4291,7 @@
 		++YYCURSOR;
 		YYDEBUG(307, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -4293,18 +4300,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 4297 "Zend/zend_ini_scanner.c"
+#line 4304 "Zend/zend_ini_scanner.c"
 yy308:
 		YYDEBUG(308, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(309, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 4308 "Zend/zend_ini_scanner.c"
+#line 4315 "Zend/zend_ini_scanner.c"
 yy310:
 		YYDEBUG(310, *YYCURSOR);
 		++YYCURSOR;
@@ -4413,11 +4420,11 @@
 		++YYCURSOR;
 		YYDEBUG(320, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 4421 "Zend/zend_ini_scanner.c"
+#line 4428 "Zend/zend_ini_scanner.c"
 yy321:
 		YYDEBUG(321, *YYCURSOR);
 		++YYCURSOR;
@@ -4426,22 +4433,22 @@
 yy322:
 		YYDEBUG(322, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 365 "Zend/zend_ini_scanner.l"
+#line 372 "Zend/zend_ini_scanner.l"
 		{ /* Variable name */
 	RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
 }
-#line 4434 "Zend/zend_ini_scanner.c"
+#line 4441 "Zend/zend_ini_scanner.c"
 yy323:
 		YYDEBUG(323, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(324, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 369 "Zend/zend_ini_scanner.l"
+#line 376 "Zend/zend_ini_scanner.l"
 		{ /* Variable end */
 	yy_pop_state(TSRMLS_C);
 	return '}';
 }
-#line 4445 "Zend/zend_ini_scanner.c"
+#line 4452 "Zend/zend_ini_scanner.c"
 yy325:
 		YYDEBUG(325, *YYCURSOR);
 		++YYCURSOR;
@@ -4455,6 +4462,6 @@
 		goto yy322;
 	}
 }
-#line 499 "Zend/zend_ini_scanner.l"
+#line 506 "Zend/zend_ini_scanner.l"
 
 }
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner_defs.h?r1=1.1.2.10&r2=1.1.2.11&diff_format=u
Index: ZendEngine2/zend_ini_scanner_defs.h
diff -u ZendEngine2/zend_ini_scanner_defs.h:1.1.2.10 ZendEngine2/zend_ini_scanner_defs.h:1.1.2.11
--- ZendEngine2/zend_ini_scanner_defs.h:1.1.2.10	Wed Nov  5 21:36:11 2008
+++ ZendEngine2/zend_ini_scanner_defs.h	Wed Dec 24 13:49:31 2008
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:51 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:47:34 2008 */
 #line 3 "Zend/zend_ini_scanner_defs.h"
 
 enum YYCONDTYPE {
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner.l?r1=1.41.2.2.2.2.2.13&r2=1.41.2.2.2.2.2.14&diff_format=u
Index: ZendEngine2/zend_ini_scanner.l
diff -u ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.13 ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.14
--- ZendEngine2/zend_ini_scanner.l:1.41.2.2.2.2.2.13	Wed Nov  5 21:35:02 2008
+++ ZendEngine2/zend_ini_scanner.l	Wed Dec 24 13:49:31 2008
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_ini_scanner.l,v 1.41.2.2.2.2.2.13 2008/11/05 21:35:02 lbarnaud Exp $ */
+/* $Id: zend_ini_scanner.l,v 1.41.2.2.2.2.2.14 2008/12/24 13:49:31 scottmac Exp $ */
 
 #include <errno.h>
 #include "zend.h"
@@ -291,6 +291,13 @@
 		return 0;
 	}
 
+	/* Eat any UTF-8 BOM we find in the first 3 bytes */
+	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
+		if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
+			YYCURSOR += 3;
+			goto restart;
+		}
+	}
 /*!re2c
 re2c:yyfill:check = 0;
 LNUM [0-9]+
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.