cvs: ZendEngine2 / zend_ini_scanner.c zend_ini_scanner.l zend_ini_scanner_defs.h

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

  Modified files:              
    /ZendEngine2	zend_ini_scanner.c zend_ini_scanner.l 
                	zend_ini_scanner_defs.h 
  Log:
  Fix bug #45991 - UTF-8 BOM breaks ini parser
scottmac-20081224134659.txt (text/plain, 23.9 KB)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner.c?r1=1.9&r2=1.10&diff_format=u
Index: ZendEngine2/zend_ini_scanner.c
diff -u ZendEngine2/zend_ini_scanner.c:1.9 ZendEngine2/zend_ini_scanner.c:1.10
--- ZendEngine2/zend_ini_scanner.c:1.9	Wed Nov  5 21:35:38 2008
+++ ZendEngine2/zend_ini_scanner.c	Wed Dec 24 13:46:59 2008
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:10 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:44:36 2008 */
 #line 1 "Zend/zend_ini_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -22,7 +22,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_ini_scanner.c,v 1.9 2008/11/05 21:35:38 lbarnaud Exp $ */
+/* $Id: zend_ini_scanner.c,v 1.10 2008/12/24 13:46:59 scottmac Exp $ */
 
 #include <errno.h>
 #include "zend.h"
@@ -293,8 +293,16 @@
 		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 306 "Zend/zend_ini_scanner.c"
 {
 	YYCTYPE yych;
 	unsigned int yyaccept = 0;
@@ -472,11 +480,11 @@
 		++YYCURSOR;
 		YYDEBUG(3, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 480 "Zend/zend_ini_scanner.c"
+#line 488 "Zend/zend_ini_scanner.c"
 yy4:
 		YYDEBUG(4, *YYCURSOR);
 		yyaccept = 0;
@@ -485,24 +493,24 @@
 yy5:
 		YYDEBUG(5, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 468 "Zend/zend_ini_scanner.l"
+#line 476 "Zend/zend_ini_scanner.l"
 		{
 	/* eat whitespace */
 	goto restart;
 }
-#line 494 "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 473 "Zend/zend_ini_scanner.l"
+#line 481 "Zend/zend_ini_scanner.l"
 		{
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 506 "Zend/zend_ini_scanner.c"
+#line 514 "Zend/zend_ini_scanner.c"
 yy8:
 		YYDEBUG(8, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -513,11 +521,11 @@
 		++YYCURSOR;
 		YYDEBUG(10, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 423 "Zend/zend_ini_scanner.l"
+#line 431 "Zend/zend_ini_scanner.l"
 		{ /* Disallow these chars outside option values */
 	return yytext[0];
 }
-#line 521 "Zend/zend_ini_scanner.c"
+#line 529 "Zend/zend_ini_scanner.c"
 yy11:
 		YYDEBUG(11, *YYCURSOR);
 		++YYCURSOR;
@@ -526,11 +534,11 @@
 yy12:
 		YYDEBUG(12, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 383 "Zend/zend_ini_scanner.l"
+#line 391 "Zend/zend_ini_scanner.l"
 		{ /* Get option name */
 	RETURN_TOKEN(TC_LABEL, yytext, yyleng);
 }
-#line 534 "Zend/zend_ini_scanner.c"
+#line 542 "Zend/zend_ini_scanner.c"
 yy13:
 		YYDEBUG(13, *YYCURSOR);
 		yyaccept = 1;
@@ -544,7 +552,7 @@
 yy15:
 		YYDEBUG(15, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 387 "Zend/zend_ini_scanner.l"
+#line 395 "Zend/zend_ini_scanner.l"
 		{ /* Start option value */
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
 		yy_push_state(ST_RAW TSRMLS_CC);
@@ -553,7 +561,7 @@
 	}
 	return '=';
 }
-#line 557 "Zend/zend_ini_scanner.c"
+#line 565 "Zend/zend_ini_scanner.c"
 yy16:
 		YYDEBUG(16, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -609,7 +617,7 @@
 		++YYCURSOR;
 		YYDEBUG(22, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 321 "Zend/zend_ini_scanner.l"
+#line 329 "Zend/zend_ini_scanner.l"
 		{ /* Section start */
 	/* Enter section data lookup state */
 	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
@@ -619,7 +627,7 @@
 	}
 	return TC_SECTION;
 }
-#line 623 "Zend/zend_ini_scanner.c"
+#line 631 "Zend/zend_ini_scanner.c"
 yy23:
 		YYDEBUG(23, *YYCURSOR);
 		++YYCURSOR;
@@ -649,7 +657,7 @@
 		}
 		YYDEBUG(28, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 346 "Zend/zend_ini_scanner.l"
+#line 354 "Zend/zend_ini_scanner.l"
 		{ /* Start of option with offset */
 	/* Eat trailing whitespace and [ */
 	EAT_TRAILING_WHITESPACE_EX('[');
@@ -659,7 +667,7 @@
 
 	RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
 }
-#line 663 "Zend/zend_ini_scanner.c"
+#line 671 "Zend/zend_ini_scanner.c"
 yy29:
 		YYDEBUG(29, *YYCURSOR);
 		++YYCURSOR;
@@ -671,11 +679,11 @@
 yy30:
 		YYDEBUG(30, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 375 "Zend/zend_ini_scanner.l"
+#line 383 "Zend/zend_ini_scanner.l"
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 679 "Zend/zend_ini_scanner.c"
+#line 687 "Zend/zend_ini_scanner.c"
 yy31:
 		YYDEBUG(31, *YYCURSOR);
 		++YYCURSOR;
@@ -713,11 +721,11 @@
 yy37:
 		YYDEBUG(37, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 379 "Zend/zend_ini_scanner.l"
+#line 387 "Zend/zend_ini_scanner.l"
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 721 "Zend/zend_ini_scanner.c"
+#line 729 "Zend/zend_ini_scanner.c"
 yy38:
 		YYDEBUG(38, *YYCURSOR);
 		++YYCURSOR;
@@ -812,13 +820,13 @@
 yy52:
 		YYDEBUG(52, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 478 "Zend/zend_ini_scanner.l"
+#line 486 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 822 "Zend/zend_ini_scanner.c"
+#line 830 "Zend/zend_ini_scanner.c"
 yy53:
 		YYDEBUG(53, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -912,7 +920,7 @@
 yy61:
 		YYDEBUG(61, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 450 "Zend/zend_ini_scanner.l"
+#line 458 "Zend/zend_ini_scanner.l"
 		{ /* Escape double quoted string contents */
 	if(yyleng > 1 && yytext[yyleng-1] == '"' && yytext[yyleng-2] == '\\') {
 		yyless(yyleng-1);
@@ -921,7 +929,7 @@
 	zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
 	return TC_QUOTED_STRING;
 }
-#line 925 "Zend/zend_ini_scanner.c"
+#line 933 "Zend/zend_ini_scanner.c"
 yy62:
 		YYDEBUG(62, *YYCURSOR);
 		++YYCURSOR;
@@ -930,12 +938,12 @@
 yy63:
 		YYDEBUG(63, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 459 "Zend/zend_ini_scanner.l"
+#line 467 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string ends */
 	yy_pop_state(TSRMLS_C);
 	return '"';
 }
-#line 939 "Zend/zend_ini_scanner.c"
+#line 947 "Zend/zend_ini_scanner.c"
 yy64:
 		YYDEBUG(64, *YYCURSOR);
 		++YYCURSOR;
@@ -950,11 +958,11 @@
 yy65:
 		YYDEBUG(65, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 958 "Zend/zend_ini_scanner.c"
+#line 966 "Zend/zend_ini_scanner.c"
 yy66:
 		YYDEBUG(66, *YYCURSOR);
 		yyaccept = 1;
@@ -1070,12 +1078,12 @@
 		++YYCURSOR;
 		YYDEBUG(82, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 361 "Zend/zend_ini_scanner.l"
+#line 369 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 1079 "Zend/zend_ini_scanner.c"
+#line 1087 "Zend/zend_ini_scanner.c"
 yy83:
 		YYDEBUG(83, *YYCURSOR);
 		++YYCURSOR;
@@ -1174,11 +1182,11 @@
 yy88:
 		YYDEBUG(88, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 441 "Zend/zend_ini_scanner.l"
+#line 449 "Zend/zend_ini_scanner.l"
 		{ /* Get rest as section/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 1182 "Zend/zend_ini_scanner.c"
+#line 1190 "Zend/zend_ini_scanner.c"
 yy89:
 		YYDEBUG(89, *YYCURSOR);
 		yyaccept = 0;
@@ -1195,23 +1203,23 @@
 yy91:
 		YYDEBUG(91, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 1203 "Zend/zend_ini_scanner.c"
+#line 1211 "Zend/zend_ini_scanner.c"
 yy92:
 		YYDEBUG(92, *YYCURSOR);
 		++YYCURSOR;
 yy93:
 		YYDEBUG(93, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 445 "Zend/zend_ini_scanner.l"
+#line 453 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 1215 "Zend/zend_ini_scanner.c"
+#line 1223 "Zend/zend_ini_scanner.c"
 yy94:
 		YYDEBUG(94, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1273,11 +1281,11 @@
 yy99:
 		YYDEBUG(99, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 419 "Zend/zend_ini_scanner.l"
+#line 427 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 1281 "Zend/zend_ini_scanner.c"
+#line 1289 "Zend/zend_ini_scanner.c"
 yy100:
 		YYDEBUG(100, *YYCURSOR);
 		yyaccept = 3;
@@ -1303,11 +1311,11 @@
 yy101:
 		YYDEBUG(101, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 415 "Zend/zend_ini_scanner.l"
+#line 423 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 1311 "Zend/zend_ini_scanner.c"
+#line 1319 "Zend/zend_ini_scanner.c"
 yy102:
 		YYDEBUG(102, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1318,12 +1326,12 @@
 yy104:
 		YYDEBUG(104, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 356 "Zend/zend_ini_scanner.l"
+#line 364 "Zend/zend_ini_scanner.l"
 		{ /* End of section or an option offset */
 	BEGIN(INITIAL);
 	return ']';
 }
-#line 1327 "Zend/zend_ini_scanner.c"
+#line 1335 "Zend/zend_ini_scanner.c"
 yy105:
 		YYDEBUG(105, *YYCURSOR);
 		yyaccept = 0;
@@ -1613,7 +1621,7 @@
 		++YYCURSOR;
 		YYDEBUG(129, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 331 "Zend/zend_ini_scanner.l"
+#line 339 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -1622,18 +1630,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1626 "Zend/zend_ini_scanner.c"
+#line 1634 "Zend/zend_ini_scanner.c"
 yy130:
 		YYDEBUG(130, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(131, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 361 "Zend/zend_ini_scanner.l"
+#line 369 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 1637 "Zend/zend_ini_scanner.c"
+#line 1645 "Zend/zend_ini_scanner.c"
 yy132:
 		YYDEBUG(132, *YYCURSOR);
 		yyaccept = 0;
@@ -1740,7 +1748,7 @@
 yy139:
 		YYDEBUG(139, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 396 "Zend/zend_ini_scanner.l"
+#line 404 "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] == '"') {
@@ -1749,7 +1757,7 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1753 "Zend/zend_ini_scanner.c"
+#line 1761 "Zend/zend_ini_scanner.c"
 yy140:
 		YYDEBUG(140, *YYCURSOR);
 		yyaccept = 0;
@@ -1771,13 +1779,13 @@
 yy142:
 		YYDEBUG(142, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 409 "Zend/zend_ini_scanner.l"
+#line 417 "Zend/zend_ini_scanner.l"
 		{ /* End of option value */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 1781 "Zend/zend_ini_scanner.c"
+#line 1789 "Zend/zend_ini_scanner.c"
 yy143:
 		YYDEBUG(143, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1791,12 +1799,12 @@
 yy145:
 		YYDEBUG(145, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 484 "Zend/zend_ini_scanner.l"
+#line 492 "Zend/zend_ini_scanner.l"
 		{ /* End of option value (if EOF is reached before EOL) */
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 1800 "Zend/zend_ini_scanner.c"
+#line 1808 "Zend/zend_ini_scanner.c"
 yy146:
 		YYDEBUG(146, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1818,13 +1826,13 @@
 yy150:
 		YYDEBUG(150, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 478 "Zend/zend_ini_scanner.l"
+#line 486 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 1828 "Zend/zend_ini_scanner.c"
+#line 1836 "Zend/zend_ini_scanner.c"
 yy151:
 		YYDEBUG(151, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -1926,21 +1934,21 @@
 yy161:
 		YYDEBUG(161, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 405 "Zend/zend_ini_scanner.l"
+#line 413 "Zend/zend_ini_scanner.l"
 		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1934 "Zend/zend_ini_scanner.c"
+#line 1942 "Zend/zend_ini_scanner.c"
 yy162:
 		YYDEBUG(162, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(163, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 1944 "Zend/zend_ini_scanner.c"
+#line 1952 "Zend/zend_ini_scanner.c"
 yy164:
 		YYDEBUG(164, *YYCURSOR);
 		++YYCURSOR;
@@ -1949,13 +1957,13 @@
 yy165:
 		YYDEBUG(165, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 340 "Zend/zend_ini_scanner.l"
+#line 348 "Zend/zend_ini_scanner.l"
 		{ /* End of section */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return ']';
 }
-#line 1959 "Zend/zend_ini_scanner.c"
+#line 1967 "Zend/zend_ini_scanner.c"
 yy166:
 		YYDEBUG(166, *YYCURSOR);
 		++YYCURSOR;
@@ -2076,11 +2084,11 @@
 yy175:
 		YYDEBUG(175, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 441 "Zend/zend_ini_scanner.l"
+#line 449 "Zend/zend_ini_scanner.l"
 		{ /* Get rest as section/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2084 "Zend/zend_ini_scanner.c"
+#line 2092 "Zend/zend_ini_scanner.c"
 yy176:
 		YYDEBUG(176, *YYCURSOR);
 		yyaccept = 0;
@@ -2099,23 +2107,23 @@
 yy178:
 		YYDEBUG(178, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 2107 "Zend/zend_ini_scanner.c"
+#line 2115 "Zend/zend_ini_scanner.c"
 yy179:
 		YYDEBUG(179, *YYCURSOR);
 		++YYCURSOR;
 yy180:
 		YYDEBUG(180, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 445 "Zend/zend_ini_scanner.l"
+#line 453 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 2119 "Zend/zend_ini_scanner.c"
+#line 2127 "Zend/zend_ini_scanner.c"
 yy181:
 		YYDEBUG(181, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2177,11 +2185,11 @@
 yy186:
 		YYDEBUG(186, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 419 "Zend/zend_ini_scanner.l"
+#line 427 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2185 "Zend/zend_ini_scanner.c"
+#line 2193 "Zend/zend_ini_scanner.c"
 yy187:
 		YYDEBUG(187, *YYCURSOR);
 		yyaccept = 3;
@@ -2207,11 +2215,11 @@
 yy188:
 		YYDEBUG(188, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 415 "Zend/zend_ini_scanner.l"
+#line 423 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2215 "Zend/zend_ini_scanner.c"
+#line 2223 "Zend/zend_ini_scanner.c"
 yy189:
 		YYDEBUG(189, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2224,13 +2232,13 @@
 yy191:
 		YYDEBUG(191, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 340 "Zend/zend_ini_scanner.l"
+#line 348 "Zend/zend_ini_scanner.l"
 		{ /* End of section */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return ']';
 }
-#line 2234 "Zend/zend_ini_scanner.c"
+#line 2242 "Zend/zend_ini_scanner.c"
 yy192:
 		YYDEBUG(192, *YYCURSOR);
 		++YYCURSOR;
@@ -2542,7 +2550,7 @@
 		++YYCURSOR;
 		YYDEBUG(220, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 331 "Zend/zend_ini_scanner.l"
+#line 339 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -2551,18 +2559,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 2555 "Zend/zend_ini_scanner.c"
+#line 2563 "Zend/zend_ini_scanner.c"
 yy221:
 		YYDEBUG(221, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(222, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 361 "Zend/zend_ini_scanner.l"
+#line 369 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 2566 "Zend/zend_ini_scanner.c"
+#line 2574 "Zend/zend_ini_scanner.c"
 yy223:
 		YYDEBUG(223, *YYCURSOR);
 		yyaccept = 0;
@@ -2741,12 +2749,12 @@
 yy229:
 		YYDEBUG(229, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 484 "Zend/zend_ini_scanner.l"
+#line 492 "Zend/zend_ini_scanner.l"
 		{ /* End of option value (if EOF is reached before EOL) */
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 2750 "Zend/zend_ini_scanner.c"
+#line 2758 "Zend/zend_ini_scanner.c"
 yy230:
 		YYDEBUG(230, *YYCURSOR);
 		yyaccept = 0;
@@ -2755,11 +2763,11 @@
 yy231:
 		YYDEBUG(231, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 437 "Zend/zend_ini_scanner.l"
+#line 445 "Zend/zend_ini_scanner.l"
 		{ /* Get everything else as option/offset value */
 	RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2763 "Zend/zend_ini_scanner.c"
+#line 2771 "Zend/zend_ini_scanner.c"
 yy232:
 		YYDEBUG(232, *YYCURSOR);
 		yyaccept = 1;
@@ -2768,24 +2776,24 @@
 yy233:
 		YYDEBUG(233, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 464 "Zend/zend_ini_scanner.l"
+#line 472 "Zend/zend_ini_scanner.l"
 		{
 	RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
 }
-#line 2776 "Zend/zend_ini_scanner.c"
+#line 2784 "Zend/zend_ini_scanner.c"
 yy234:
 		YYDEBUG(234, *YYCURSOR);
 		++YYCURSOR;
 yy235:
 		YYDEBUG(235, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 409 "Zend/zend_ini_scanner.l"
+#line 417 "Zend/zend_ini_scanner.l"
 		{ /* End of option value */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 2789 "Zend/zend_ini_scanner.c"
+#line 2797 "Zend/zend_ini_scanner.c"
 yy236:
 		YYDEBUG(236, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2799,23 +2807,23 @@
 yy238:
 		YYDEBUG(238, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 427 "Zend/zend_ini_scanner.l"
+#line 435 "Zend/zend_ini_scanner.l"
 		{ /* Boolean operators */
 	return yytext[0];
 }
-#line 2807 "Zend/zend_ini_scanner.c"
+#line 2815 "Zend/zend_ini_scanner.c"
 yy239:
 		YYDEBUG(239, *YYCURSOR);
 		++YYCURSOR;
 yy240:
 		YYDEBUG(240, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 445 "Zend/zend_ini_scanner.l"
+#line 453 "Zend/zend_ini_scanner.l"
 		{ /* Double quoted '"' string start */
 	yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
 	return '"';
 }
-#line 2819 "Zend/zend_ini_scanner.c"
+#line 2827 "Zend/zend_ini_scanner.c"
 yy241:
 		YYDEBUG(241, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -2891,11 +2899,11 @@
 yy246:
 		YYDEBUG(246, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 419 "Zend/zend_ini_scanner.l"
+#line 427 "Zend/zend_ini_scanner.l"
 		{ /* Get number option value as string */
 	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2899 "Zend/zend_ini_scanner.c"
+#line 2907 "Zend/zend_ini_scanner.c"
 yy247:
 		YYDEBUG(247, *YYCURSOR);
 		yyaccept = 2;
@@ -2906,13 +2914,13 @@
 		++YYCURSOR;
 		YYDEBUG(249, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 431 "Zend/zend_ini_scanner.l"
+#line 439 "Zend/zend_ini_scanner.l"
 		{ /* Make = used in option value to trigger error */
 	yyless(0);
 	BEGIN(INITIAL);
 	return END_OF_LINE;
 }
-#line 2916 "Zend/zend_ini_scanner.c"
+#line 2924 "Zend/zend_ini_scanner.c"
 yy250:
 		YYDEBUG(250, *YYCURSOR);
 		yyaccept = 4;
@@ -2948,11 +2956,11 @@
 yy251:
 		YYDEBUG(251, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 415 "Zend/zend_ini_scanner.l"
+#line 423 "Zend/zend_ini_scanner.l"
 		{ /* Get constant option value */
 	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2956 "Zend/zend_ini_scanner.c"
+#line 2964 "Zend/zend_ini_scanner.c"
 yy252:
 		YYDEBUG(252, *YYCURSOR);
 		yyaccept = 4;
@@ -3444,11 +3452,11 @@
 yy268:
 		YYDEBUG(268, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 375 "Zend/zend_ini_scanner.l"
+#line 383 "Zend/zend_ini_scanner.l"
 		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
 	RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 3452 "Zend/zend_ini_scanner.c"
+#line 3460 "Zend/zend_ini_scanner.c"
 yy269:
 		YYDEBUG(269, *YYCURSOR);
 		++YYCURSOR;
@@ -3648,11 +3656,11 @@
 yy275:
 		YYDEBUG(275, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 379 "Zend/zend_ini_scanner.l"
+#line 387 "Zend/zend_ini_scanner.l"
 		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
 	RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 3656 "Zend/zend_ini_scanner.c"
+#line 3664 "Zend/zend_ini_scanner.c"
 yy276:
 		YYDEBUG(276, *YYCURSOR);
 		++YYCURSOR;
@@ -4028,13 +4036,13 @@
 yy288:
 		YYDEBUG(288, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 478 "Zend/zend_ini_scanner.l"
+#line 486 "Zend/zend_ini_scanner.l"
 		{ /* Comment */
 	BEGIN(INITIAL);
 	SCNG(lineno)++;
 	return END_OF_LINE;
 }
-#line 4038 "Zend/zend_ini_scanner.c"
+#line 4046 "Zend/zend_ini_scanner.c"
 yy289:
 		YYDEBUG(289, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -4246,7 +4254,7 @@
 		++YYCURSOR;
 		YYDEBUG(301, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 331 "Zend/zend_ini_scanner.l"
+#line 339 "Zend/zend_ini_scanner.l"
 		{ /* Raw string */
 	/* Eat leading and trailing single quotes */
 	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -4255,18 +4263,18 @@
 	}
 	RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 4259 "Zend/zend_ini_scanner.c"
+#line 4267 "Zend/zend_ini_scanner.c"
 yy302:
 		YYDEBUG(302, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(303, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 361 "Zend/zend_ini_scanner.l"
+#line 369 "Zend/zend_ini_scanner.l"
 		{ /* Variable start */
 	yy_push_state(ST_VARNAME TSRMLS_CC);
 	return TC_DOLLAR_CURLY;
 }
-#line 4270 "Zend/zend_ini_scanner.c"
+#line 4278 "Zend/zend_ini_scanner.c"
 yy304:
 		YYDEBUG(304, *YYCURSOR);
 		++YYCURSOR;
@@ -4375,11 +4383,11 @@
 		++YYCURSOR;
 		YYDEBUG(314, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
 		{
 	return 0;
 }
-#line 4383 "Zend/zend_ini_scanner.c"
+#line 4391 "Zend/zend_ini_scanner.c"
 yy315:
 		YYDEBUG(315, *YYCURSOR);
 		++YYCURSOR;
@@ -4388,22 +4396,22 @@
 yy316:
 		YYDEBUG(316, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 366 "Zend/zend_ini_scanner.l"
+#line 374 "Zend/zend_ini_scanner.l"
 		{ /* Variable name */
 	RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
 }
-#line 4396 "Zend/zend_ini_scanner.c"
+#line 4404 "Zend/zend_ini_scanner.c"
 yy317:
 		YYDEBUG(317, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(318, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 370 "Zend/zend_ini_scanner.l"
+#line 378 "Zend/zend_ini_scanner.l"
 		{ /* Variable end */
 	yy_pop_state(TSRMLS_C);
 	return '}';
 }
-#line 4407 "Zend/zend_ini_scanner.c"
+#line 4415 "Zend/zend_ini_scanner.c"
 yy319:
 		YYDEBUG(319, *YYCURSOR);
 		++YYCURSOR;
@@ -4417,6 +4425,6 @@
 		goto yy316;
 	}
 }
-#line 493 "Zend/zend_ini_scanner.l"
+#line 501 "Zend/zend_ini_scanner.l"
 
 }
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner.l?r1=1.58&r2=1.59&diff_format=u
Index: ZendEngine2/zend_ini_scanner.l
diff -u ZendEngine2/zend_ini_scanner.l:1.58 ZendEngine2/zend_ini_scanner.l:1.59
--- ZendEngine2/zend_ini_scanner.l:1.58	Wed Nov  5 21:33:19 2008
+++ ZendEngine2/zend_ini_scanner.l	Wed Dec 24 13:46:59 2008
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_ini_scanner.l,v 1.58 2008/11/05 21:33:19 lbarnaud Exp $ */
+/* $Id: zend_ini_scanner.l,v 1.59 2008/12/24 13:46:59 scottmac Exp $ */
 
 #include <errno.h>
 #include "zend.h"
@@ -291,6 +291,14 @@
 		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]+
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ini_scanner_defs.h?r1=1.8&r2=1.9&diff_format=u
Index: ZendEngine2/zend_ini_scanner_defs.h
diff -u ZendEngine2/zend_ini_scanner_defs.h:1.8 ZendEngine2/zend_ini_scanner_defs.h:1.9
--- ZendEngine2/zend_ini_scanner_defs.h:1.8	Wed Nov  5 21:35:38 2008
+++ ZendEngine2/zend_ini_scanner_defs.h	Wed Dec 24 13:46:59 2008
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:10 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:44:36 2008 */
 #line 3 "Zend/zend_ini_scanner_defs.h"
 
 enum YYCONDTYPE {
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.