felipe                                   Thu, 24 Jun 2010 22:32:42 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=300737

Log:
- Fixed bug #52138 (Constants are parsed into the ini file for section names)

Bug: http://bugs.php.net/52138 (error getting bug information)
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/Zend/zend_ini_parser.y
    A   
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.data
    A   
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.phpt
    U   php/php-src/trunk/Zend/zend_ini_parser.y
    A   php/php-src/trunk/ext/standard/tests/general_functions/bug52138.data
    A   php/php-src/trunk/ext/standard/tests/general_functions/bug52138.phpt

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-06-24 22:07:28 UTC (rev 300736)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-06-24 22:32:42 UTC (rev 300737)
@@ -5,6 +5,8 @@
 - Fixed the mail.log ini setting when no filename was given. (Johannes)
 - Fixed bug #52162 (custom request header variables with numbers are removed).
   (Sriram Natarajan)
+- Fixed bug #52138 (Constants are parsed into the ini file for section names).
+  (Felipe)
 - Fixed bug #52115 (mysqli_result::fetch_all returns null, not an empty array).
   (Andrey)


Modified: php/php-src/branches/PHP_5_3/Zend/zend_ini_parser.y
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_ini_parser.y 2010-06-24 22:07:28 UTC 
(rev 300736)
+++ php/php-src/branches/PHP_5_3/Zend/zend_ini_parser.y 2010-06-24 22:32:42 UTC 
(rev 300737)
@@ -304,7 +304,7 @@
 ;

 section_string_or_value:
-               var_string_list                                 { $$ = $1; }
+               var_string_list_section                 { $$ = $1; }
        |       /* empty */                                             { 
zend_ini_init_string(&$$); }
 ;

@@ -326,6 +326,15 @@
        |       /* 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 @@
                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));*/ }

Added: 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.data
===================================================================
--- 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.data 
                            (rev 0)
+++ 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.data 
    2010-06-24 22:32:42 UTC (rev 300737)
@@ -0,0 +1,11 @@
+[MYCONST]
+MYCONST = MYCONST
+
+[M_PI]
+FOO=M_PI " test"
+
+[foo::bar]
+A=1
+B=A "A" A
+
+[MYCONST M_PI]

Added: 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.phpt
===================================================================
--- 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.phpt 
                            (rev 0)
+++ 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.phpt 
    2010-06-24 22:32:42 UTC (rev 300737)
@@ -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) {
+  }
+}


Property changes on: 
php/php-src/branches/PHP_5_3/ext/standard/tests/general_functions/bug52138.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/trunk/Zend/zend_ini_parser.y
===================================================================
--- php/php-src/trunk/Zend/zend_ini_parser.y    2010-06-24 22:07:28 UTC (rev 
300736)
+++ php/php-src/trunk/Zend/zend_ini_parser.y    2010-06-24 22:32:42 UTC (rev 
300737)
@@ -304,7 +304,7 @@
 ;

 section_string_or_value:
-               var_string_list                                 { $$ = $1; }
+               var_string_list_section                 { $$ = $1; }
        |       /* empty */                                             { 
zend_ini_init_string(&$$); }
 ;

@@ -326,6 +326,15 @@
        |       /* 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 @@
                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));*/ }

Added: php/php-src/trunk/ext/standard/tests/general_functions/bug52138.data
===================================================================
--- php/php-src/trunk/ext/standard/tests/general_functions/bug52138.data        
                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/general_functions/bug52138.data        
2010-06-24 22:32:42 UTC (rev 300737)
@@ -0,0 +1,11 @@
+[MYCONST]
+MYCONST = MYCONST
+
+[M_PI]
+FOO=M_PI " test"
+
+[foo::bar]
+A=1
+B=A "A" A
+
+[MYCONST M_PI]

Added: php/php-src/trunk/ext/standard/tests/general_functions/bug52138.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/general_functions/bug52138.phpt        
                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/general_functions/bug52138.phpt        
2010-06-24 22:32:42 UTC (rev 300737)
@@ -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) {
+  }
+}


Property changes on: 
php/php-src/trunk/ext/standard/tests/general_functions/bug52138.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to