diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-02-10 10:04:30 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-10 10:04:30 +0400 |
commit | f4cfaf36e23ca47da3e352e1c60909104c059647 (patch) | |
tree | 0db3e2a323b12c5bbf1a958c857f92eb58c240d1 /Zend/zend_ini_parser.y | |
parent | 89a9acea1f9d821a9805b3857bf4febbba08690d (diff) | |
download | php-git-f4cfaf36e23ca47da3e352e1c60909104c059647.tar.gz |
Use better data structures (incomplete)
Diffstat (limited to 'Zend/zend_ini_parser.y')
-rw-r--r-- | Zend/zend_ini_parser.y | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 3823efd413..73a0b257b6 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -49,6 +49,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2) { int i_result; int i_op1, i_op2; + int str_len; char str_result[MAX_LENGTH_OF_LONG]; i_op1 = atoi(Z_STRVAL_P(op1)); @@ -81,11 +82,8 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2) break; } - Z_STRLEN_P(result) = zend_sprintf(str_result, "%d", i_result); - Z_STRVAL_P(result) = (char *) malloc(Z_STRLEN_P(result)+1); - memcpy(Z_STRVAL_P(result), str_result, Z_STRLEN_P(result)); - Z_STRVAL_P(result)[Z_STRLEN_P(result)] = 0; - Z_TYPE_P(result) = IS_STRING; + str_len = zend_sprintf(str_result, "%d", i_result); + ZVAL_PSTRINGL(result, str_result, str_len); } /* }}} */ @@ -93,10 +91,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2) */ static void zend_ini_init_string(zval *result) { - Z_STRVAL_P(result) = malloc(1); - Z_STRVAL_P(result)[0] = 0; - Z_STRLEN_P(result) = 0; - Z_TYPE_P(result) = IS_STRING; + ZVAL_EMPTY_PSTRING(result); } /* }}} */ @@ -106,11 +101,10 @@ static void zend_ini_add_string(zval *result, zval *op1, zval *op2) { int length = Z_STRLEN_P(op1) + Z_STRLEN_P(op2); - Z_STRVAL_P(result) = (char *) realloc(Z_STRVAL_P(op1), length+1); + ZVAL_STR(result, STR_ALLOC(length, 1)); + memcpy(Z_STRVAL_P(result), Z_STRVAL_P(op1), Z_STRLEN_P(op1)); memcpy(Z_STRVAL_P(result)+Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2)); Z_STRVAL_P(result)[length] = 0; - Z_STRLEN_P(result) = length; - Z_TYPE_P(result) = IS_STRING; } /* }}} */ @@ -125,9 +119,7 @@ static void zend_ini_get_constant(zval *result, zval *name TSRMLS_DC) && zend_get_constant(Z_STRVAL_P(name), Z_STRLEN_P(name), &z_constant TSRMLS_CC)) { /* z_constant is emalloc()'d */ convert_to_string(&z_constant); - Z_STRVAL_P(result) = zend_strndup(Z_STRVAL(z_constant), Z_STRLEN(z_constant)); - Z_STRLEN_P(result) = Z_STRLEN(z_constant); - Z_TYPE_P(result) = Z_TYPE(z_constant); + ZVAL_PSTRINGL(result, Z_STRVAL(z_constant), Z_STRLEN(z_constant)); zval_dtor(&z_constant); free(Z_STRVAL_P(name)); } else { @@ -145,13 +137,11 @@ static void zend_ini_get_var(zval *result, zval *name TSRMLS_DC) /* Fetch configuration option value */ if (zend_get_configuration_directive(Z_STRVAL_P(name), Z_STRLEN_P(name)+1, &curval) == SUCCESS) { - Z_STRVAL_P(result) = zend_strndup(Z_STRVAL(curval), Z_STRLEN(curval)); - Z_STRLEN_P(result) = Z_STRLEN(curval); + 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 || (envvar = getenv(Z_STRVAL_P(name))) != NULL) { - Z_STRVAL_P(result) = strdup(envvar); - Z_STRLEN_P(result) = strlen(envvar); + ZVAL_PSTRING(result, envvar); } else { zend_ini_init_string(result); } @@ -160,7 +150,7 @@ static void zend_ini_get_var(zval *result, zval *name TSRMLS_DC) /* {{{ ini_error() */ -static void ini_error(char *msg) +static void ini_error(const char *msg) { char *error_buf; int error_buf_len; |