mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
- Fixed bug #52138 (Constants are parsed into the ini file for section names)
This commit is contained in:
parent
ee4818a12a
commit
b355aa00b0
@ -304,7 +304,7 @@ statement:
|
||||
;
|
||||
|
||||
section_string_or_value:
|
||||
var_string_list { $$ = $1; }
|
||||
var_string_list_section { $$ = $1; }
|
||||
| /* empty */ { zend_ini_init_string(&$$); }
|
||||
;
|
||||
|
||||
@ -326,6 +326,15 @@ encapsed_list:
|
||||
| /* empty */ { zend_ini_init_string(&$$); }
|
||||
;
|
||||
|
||||
var_string_list_section:
|
||||
cfg_var_ref { $$ = $1; }
|
||||
| constant_literal { $$ = $1; }
|
||||
| '"' encapsed_list '"' { $$ = $2; }
|
||||
| var_string_list_section cfg_var_ref { zend_ini_add_string(&$$, &$1, &$2); free(Z_STRVAL($2)); }
|
||||
| var_string_list_section constant_literal { zend_ini_add_string(&$$, &$1, &$2); free(Z_STRVAL($2)); }
|
||||
| var_string_list_section '"' encapsed_list '"' { zend_ini_add_string(&$$, &$1, &$3); free(Z_STRVAL($3)); }
|
||||
;
|
||||
|
||||
var_string_list:
|
||||
cfg_var_ref { $$ = $1; }
|
||||
| constant_string { $$ = $1; }
|
||||
@ -348,6 +357,14 @@ cfg_var_ref:
|
||||
TC_DOLLAR_CURLY TC_VARNAME '}' { zend_ini_get_var(&$$, &$2 TSRMLS_CC); free(Z_STRVAL($2)); }
|
||||
;
|
||||
|
||||
constant_literal:
|
||||
TC_CONSTANT { $$ = $1; }
|
||||
| TC_RAW { $$ = $1; /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
|
||||
| TC_NUMBER { $$ = $1; /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
|
||||
| TC_STRING { $$ = $1; /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
|
||||
| TC_WHITESPACE { $$ = $1; /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
|
||||
;
|
||||
|
||||
constant_string:
|
||||
TC_CONSTANT { zend_ini_get_constant(&$$, &$1 TSRMLS_CC); }
|
||||
| TC_RAW { $$ = $1; /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
|
||||
|
11
ext/standard/tests/general_functions/bug52138.data
Normal file
11
ext/standard/tests/general_functions/bug52138.data
Normal file
@ -0,0 +1,11 @@
|
||||
[MYCONST]
|
||||
MYCONST = MYCONST
|
||||
|
||||
[M_PI]
|
||||
FOO=M_PI " test"
|
||||
|
||||
[foo::bar]
|
||||
A=1
|
||||
B=A "A" A
|
||||
|
||||
[MYCONST M_PI]
|
37
ext/standard/tests/general_functions/bug52138.phpt
Normal file
37
ext/standard/tests/general_functions/bug52138.phpt
Normal file
@ -0,0 +1,37 @@
|
||||
--TEST--
|
||||
Bug #52138 (Constants are parsed into the ini file for section names)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
define('MYCONST', 1);
|
||||
define('A', 'B');
|
||||
|
||||
$ini_file = dirname(__FILE__)."/bug52138.data";
|
||||
|
||||
$ret = parse_ini_file($ini_file, true);
|
||||
var_dump($ret);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(4) {
|
||||
["MYCONST"]=>
|
||||
array(1) {
|
||||
["MYCONST"]=>
|
||||
string(1) "1"
|
||||
}
|
||||
["M_PI"]=>
|
||||
array(1) {
|
||||
["FOO"]=>
|
||||
string(%d) "3.%d test"
|
||||
}
|
||||
["foo::bar"]=>
|
||||
array(2) {
|
||||
["A"]=>
|
||||
string(1) "1"
|
||||
["B"]=>
|
||||
string(3) "BAB"
|
||||
}
|
||||
["MYCONST M_PI"]=>
|
||||
array(0) {
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user