svn: /php/php-src/ branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt branches/PHP_5_3/NEWS branches/PHP_5_3/Zend/zend_ini_scanner.l
branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt trunk/Zend/zend_ini_scanner.l
trunk/ext/standard/tests/general_functions/bug49056.phpt
| From: | Jani Taskinen | Date: | Tue, 04 Aug 2009 02:34:04 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt branches/PHP_5_3/NEWS branches/PHP_5_3/Zend/zend_ini_scanner.l branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt trunk/Zend/zend_ini_scanner.l trunk/ext/standard/tests/general_functions/bug49056.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-60005@lists.php.net to get a copy of this message | ||
jani Tue, 04 Aug 2009 02:34:04 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=286778
Log:
- Fixed bug #49056 (parse_ini_file() regression in 5.3.0 when using non-ASCII strings as option
keys)
Bug: http://bugs.php.net/49056 (Open) parse_ini_file()
regression in 5.3.0 when using non-ASCII strings as option keys
Changed paths:
A php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/Zend/zend_ini_scanner.l
A php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt
U php/php-src/trunk/Zend/zend_ini_scanner.l
A php/php-src/trunk/ext/standard/tests/general_functions/bug49056.phpt
Added: php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/general_functions/bug49056.phpt 2009-08-04
02:34:04 UTC (rev 286778)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #49056 (parse_ini_*() regression in 5.3.0 when using non-ASCII strings as option keys)
+--FILE--
+<?php
+
+$string = <<<EOT
+Cooking_furniture="Küchen Möbel (en)"
+Küchen_Möbel="Cooking furniture (en)"
+EOT;
+
+$filename = dirname(__FILE__) . '/bug49056.tmp';
+
+file_put_contents( $filename, $string);
+
+var_dump(parse_ini_file($filename));
+
+?>
+--CLEAN--
+<?php @unlink(dirname(__FILE__) . '/bug49056.tmp'); ?>
+--EXPECT--
+array(2) {
+ ["Cooking_furniture"]=>
+ string(23) "Küchen Möbel (en)"
+ ["Küchen_Möbel"]=>
+ string(22) "Cooking furniture (en)"
+}
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2009-08-04 02:24:47 UTC (rev 286777)
+++ php/php-src/branches/PHP_5_3/NEWS 2009-08-04 02:34:04 UTC (rev 286778)
@@ -23,6 +23,8 @@
Zend extensions). (Stas)
- Fixed bug #49064 (--enable-session=shared does not work: undefined symbol:
php_url_scanner_reset_vars). (Jani)
+- Fixed bug #49056 (parse_ini_file() regression in 5.3.0 when using non-ASCII
+ strings as option keys). (Jani)
- Fixed bug #49052 (context option headers freed too early when using
--with-curlwrappers). (Jani)
- Fixed bug #49032 (SplFileObject::fscanf() variables passed by reference).
Modified: php/php-src/branches/PHP_5_3/Zend/zend_ini_scanner.l
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_ini_scanner.l 2009-08-04 02:24:47 UTC (rev 286777)
+++ php/php-src/branches/PHP_5_3/Zend/zend_ini_scanner.l 2009-08-04 02:34:04 UTC (rev 286778)
@@ -308,7 +308,7 @@
TABS_AND_SPACES [ \t]
WHITESPACE [ \t]+
CONSTANT [a-zA-Z][a-zA-Z0-9_]*
-LABEL [a-zA-Z0-9*._-]*
+LABEL [^=\n\r\t ;|&$~(){}!"\[]+
TOKENS [:,.\[\]"'()|^&+-/*=%$!~<>?@{}]
OPERATORS [&|~()!]
DOLLAR_CURLY "${"
Added: php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug49056.phpt 2009-08-04
02:34:04 UTC (rev 286778)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #49056 (parse_ini_*() regression in 5.3.0 when using non-ASCII strings as option keys)
+--FILE--
+<?php
+
+$string = <<<EOT
+Cooking_furniture="Küchen Möbel (en)"
+Küchen_Möbel="Cooking furniture (en)"
+EOT;
+
+$filename = dirname(__FILE__) . '/bug49056.tmp';
+
+file_put_contents( $filename, $string);
+
+var_dump(parse_ini_file($filename));
+
+?>
+--CLEAN--
+<?php @unlink(dirname(__FILE__) . '/bug49056.tmp'); ?>
+--EXPECT--
+array(2) {
+ ["Cooking_furniture"]=>
+ string(23) "Küchen Möbel (en)"
+ ["Küchen_Möbel"]=>
+ string(22) "Cooking furniture (en)"
+}
Modified: php/php-src/trunk/Zend/zend_ini_scanner.l
===================================================================
--- php/php-src/trunk/Zend/zend_ini_scanner.l 2009-08-04 02:24:47 UTC (rev 286777)
+++ php/php-src/trunk/Zend/zend_ini_scanner.l 2009-08-04 02:34:04 UTC (rev 286778)
@@ -298,7 +298,6 @@
goto restart;
}
}
-
/*!re2c
re2c:yyfill:check = 0;
LNUM [0-9]+
@@ -309,7 +308,7 @@
TABS_AND_SPACES [ \t]
WHITESPACE [ \t]+
CONSTANT [a-zA-Z][a-zA-Z0-9_]*
-LABEL [a-zA-Z0-9*._-]*
+LABEL [^=\n\r\t ;|&$~(){}!"\[]+
TOKENS [:,.\[\]"'()|^&+-/*=%$!~<>?@{}]
OPERATORS [&|~()!]
DOLLAR_CURLY "${"
@@ -318,13 +317,12 @@
SINGLE_QUOTED_CHARS [^']
RAW_VALUE_CHARS [^=\n\r;]
-/* Allow using ${foobar} in sections, quoted strings and values */
LITERAL_DOLLAR ("$"([^{\000]|("\\"{ANY_CHAR})))
VALUE_CHARS ([^$= \t\n\r;&|~()!"'\000]|{LITERAL_DOLLAR})
SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
DOUBLE_QUOTES_CHARS
([^$"\\]|("\\"[^"])|{LITERAL_DOLLAR}|"\\"["][^\r\n])
-+<!*> := yyleng = YYCURSOR - SCNG(yy_text);
+<!*> := yyleng = YYCURSOR - SCNG(yy_text);
<INITIAL>"[" { /* Section start */
/* Enter section data lookup state */
@@ -489,11 +487,18 @@
return END_OF_LINE;
}
-<ST_VALUE,ST_RAW>[^] { /* End of option value (if EOF is reached before EOL) */
+<INITIAL>{TABS_AND_SPACES}*[#][^\r\n]*{NEWLINE} { /* #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;
}
+<ST_VALUE,ST_RAW>[^] { /* End of option value (if EOF is reached before EOL */
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+}
+
<*>[^] {
return 0;
}
Added: php/php-src/trunk/ext/standard/tests/general_functions/bug49056.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/general_functions/bug49056.phpt
(rev 0)
+++ php/php-src/trunk/ext/standard/tests/general_functions/bug49056.phpt 2009-08-04 02:34:04 UTC
(rev 286778)
@@ -0,0 +1,26 @@
+--TEST--
+Bug #49056 (parse_ini_*() regression in 5.3.0 when using non-ASCII strings as option keys)
+--FILE--
+<?php
+
+$string = <<<EOT
+Cooking_furniture="Küchen Möbel (en)"
+Küchen_Möbel="Cooking furniture (en)"
+EOT;
+
+$filename = dirname(__FILE__) . '/bug49056.tmp';
+
+file_put_contents( $filename, $string);
+
+var_dump(parse_ini_file($filename));
+
+?>
+--CLEAN--
+<?php @unlink(dirname(__FILE__) . '/bug49056.tmp'); ?>
+--EXPECT--
+array(2) {
+ [u"Cooking_furniture"]=>
+ unicode(19) "Küchen Möbel (en)"
+ [u"Küchen_Möbel"]=>
+ unicode(22) "Cooking furniture (en)"
+}