From: Xinchen Hui Date: Sun, 9 Mar 2014 03:35:20 +0000 (+0800) Subject: Fixed parse_ini_file X-Git-Tag: POST_PHPNG_MERGE~412^2~355 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1ed4f6bf9cc958b6f78cf997c81ec24e7da117f;p=php Fixed parse_ini_file --- diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 268f21bb86..e9bebf189f 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -136,7 +136,7 @@ static void zend_ini_get_var(zval *result, zval *name TSRMLS_DC) char *envvar; /* Fetch configuration option value */ - if (zend_get_configuration_directive(Z_STRVAL_P(name), Z_STRLEN_P(name)+1, &curval) == SUCCESS) { + if (zend_get_configuration_directive(Z_STRVAL_P(name), Z_STRLEN_P(name), &curval) == SUCCESS) { ZVAL_PSTRINGL(result, Z_STRVAL(curval), Z_STRLEN(curval)); /* ..or if not found, try ENV */ } else if ((envvar = zend_getenv(Z_STRVAL_P(name), Z_STRLEN_P(name) TSRMLS_CC)) != NULL || diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 499aa82229..d666c025bb 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -5906,33 +5906,27 @@ static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int cal ulong key = (ulong) zend_atol(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)); if ((find_hash = zend_hash_index_find(Z_ARRVAL_P(arr), key)) == NULL) { array_init(&hash); - - zend_hash_index_update(Z_ARRVAL_P(arr), key, &hash); - } else { - ZVAL_COPY_VALUE(&hash, find_hash); - } + find_hash = zend_hash_index_update(Z_ARRVAL_P(arr), key, &hash); + } } else { if ((find_hash = zend_hash_find(Z_ARRVAL_P(arr), Z_STR_P(arg1))) == NULL) { array_init(&hash); - - zend_hash_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &hash); - } else { - ZVAL_COPY_VALUE(&hash, find_hash); - } + find_hash = zend_hash_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &hash); + } } - if (Z_TYPE(hash) != IS_ARRAY) { - zval_dtor(&hash); - array_init(&hash); + if (Z_TYPE_P(find_hash) != IS_ARRAY) { + zval_dtor(find_hash); + array_init(find_hash); } ZVAL_DUP(&element, arg2); if (arg3 && Z_STRLEN_P(arg3) > 0) { //??? - add_assoc_zval_ex(&hash, Z_STRVAL_P(arg3), Z_STRLEN_P(arg3), &element); + add_assoc_zval_ex(find_hash, Z_STRVAL_P(arg3), Z_STRLEN_P(arg3), &element); } else { - add_next_index_zval(&hash, &element); + add_next_index_zval(find_hash, &element); } } break;