mirror of
https://github.com/php/php-src.git
synced 2026-04-05 23:23:03 +02:00
Merge branch 'PHP-5.3' of https://git.php.net/repository/php-src into PHP-5.3
* 'PHP-5.3' of https://git.php.net/repository/php-src: Regenerate Zend ini scanner Fixed bug #63512 parse_ini_file() with INI_SCANNER_RAW removes quotes from value
This commit is contained in:
3
NEWS
3
NEWS
@@ -2,6 +2,9 @@ PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? 2ß12, PHP 5.3.20
|
||||
|
||||
- Zend Engine:
|
||||
. Fixed bug #63512 (parse_ini_file() with INI_SCANNER_RAW removes quotes
|
||||
from value). (Pierrick)
|
||||
- Core:
|
||||
. Fixed bug #63451 (config.guess file does not have AIX 7 defined,
|
||||
shared objects are not created). (kemcline at au1 dot ibm dot com)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -347,7 +347,7 @@ DOLLAR_CURLY "${"
|
||||
|
||||
SECTION_RAW_CHARS [^\]\n\r]
|
||||
SINGLE_QUOTED_CHARS [^']
|
||||
RAW_VALUE_CHARS [^"\n\r;\000]
|
||||
RAW_VALUE_CHARS [^\n\r;\000]
|
||||
|
||||
LITERAL_DOLLAR ("$"([^{\000]|("\\"{ANY_CHAR})))
|
||||
VALUE_CHARS ([^$= \t\n\r;&|~()!"'\000]|{LITERAL_DOLLAR})
|
||||
@@ -445,33 +445,40 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
|
||||
return '=';
|
||||
}
|
||||
|
||||
<ST_RAW>["] {
|
||||
<ST_RAW>{RAW_VALUE_CHARS} { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
|
||||
char *sc = NULL;
|
||||
while (YYCURSOR < YYLIMIT) {
|
||||
switch (*YYCURSOR++) {
|
||||
switch (*YYCURSOR) {
|
||||
case '\n':
|
||||
SCNG(lineno)++;
|
||||
break;
|
||||
case '\r':
|
||||
if (*YYCURSOR != '\n') {
|
||||
SCNG(lineno)++;
|
||||
}
|
||||
goto end_raw_value_chars;
|
||||
break;
|
||||
case '"':
|
||||
yyleng = YYCURSOR - SCNG(yy_text) - 2;
|
||||
SCNG(yy_text)++;
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
case '\\':
|
||||
if (YYCURSOR < YYLIMIT) {
|
||||
YYCURSOR++;
|
||||
case ';':
|
||||
if (sc == NULL) {
|
||||
sc = YYCURSOR;
|
||||
}
|
||||
/* no break */
|
||||
default:
|
||||
YYCURSOR++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
end_raw_value_chars:
|
||||
yyleng = YYCURSOR - SCNG(yy_text);
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
<ST_RAW>{RAW_VALUE_CHARS}+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
|
||||
/* Eat trailing semicolons */
|
||||
while (yytext[yyleng - 1] == ';') {
|
||||
yyleng--;
|
||||
}
|
||||
|
||||
/* Eat leading and trailing double quotes */
|
||||
if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
|
||||
SCNG(yy_text)++;
|
||||
yyleng = yyleng - 2;
|
||||
} else if (sc) {
|
||||
YYCURSOR = sc;
|
||||
yyleng = YYCURSOR - SCNG(yy_text);
|
||||
}
|
||||
RETURN_TOKEN(TC_RAW, yytext, yyleng);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Generated by re2c 0.13.5 on Thu Jun 7 17:37:03 2012 */
|
||||
/* Generated by re2c 0.13.5 on Fri Nov 16 17:44:02 2012 */
|
||||
#line 3 "Zend/zend_ini_scanner_defs.h"
|
||||
|
||||
enum YYCONDTYPE {
|
||||
|
||||
@@ -15,7 +15,7 @@ $ini = parse_ini_string("ini=\r\niniraw", null, INI_SCANNER_RAW);
|
||||
var_dump($ini['ini']);
|
||||
--EXPECTF--
|
||||
string(7) "ini;raw"
|
||||
string(8) ""ini;raw"
|
||||
string(4) ""ini"
|
||||
string(3) "ini"
|
||||
string(7) "ini"raw"
|
||||
string(0) ""
|
||||
|
||||
33
ext/standard/tests/file/bug63512.phpt
Normal file
33
ext/standard/tests/file/bug63512.phpt
Normal file
@@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
Fixed bug #63512 (parse_ini_file() with INI_SCANNER_RAW removes quotes from value).
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$array = parse_ini_string('
|
||||
int = 123
|
||||
constant = INSTALL_ROOT
|
||||
quotedString = "string"
|
||||
a = INSTALL_ROOT "waa"
|
||||
b = "INSTALL_ROOT"
|
||||
c = "waa" INSTALL_ROOT
|
||||
d = INSTALL_ROOT "INSTALL_ROOT"', false, INI_SCANNER_RAW);
|
||||
|
||||
var_dump($array);
|
||||
--EXPECTF--
|
||||
array(7) {
|
||||
["int"]=>
|
||||
string(3) "123"
|
||||
["constant"]=>
|
||||
string(12) "INSTALL_ROOT"
|
||||
["quotedString"]=>
|
||||
string(6) "string"
|
||||
["a"]=>
|
||||
string(18) "INSTALL_ROOT "waa""
|
||||
["b"]=>
|
||||
string(12) "INSTALL_ROOT"
|
||||
["c"]=>
|
||||
string(18) ""waa" INSTALL_ROOT"
|
||||
["d"]=>
|
||||
string(27) "INSTALL_ROOT "INSTALL_ROOT""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user