diff options
author | Xinchen Hui <laruence@php.net> | 2014-05-10 00:21:49 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2014-05-10 00:21:49 +0800 |
commit | 88c550a7998d4af00767237b89f020ae3acac61b (patch) | |
tree | 5ff186b3072797bd03a1167c6d6e0c9b0d1e2140 /Zend/zend_operators.c | |
parent | e2890e3a0f3ea5a9ce4b9c8e9e78777f012a4b74 (diff) | |
download | php-git-88c550a7998d4af00767237b89f020ae3acac61b.tar.gz |
Added vstrpprintf strpprintf to avoid duplicate string
(the function name maybe improvement)
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 9cf0497d22..4c9db85262 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -621,15 +621,13 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */ break; } case IS_DOUBLE: { - char *str; - int len; + zend_string *str; double dval = Z_DVAL_P(op); TSRMLS_FETCH(); - len = zend_spprintf(&str, 0, "%.*G", (int) EG(precision), dval); + str = zend_strpprintf(0, "%.*G", (int) EG(precision), dval); /* %G already handles removing trailing zeros from the fractional part, yay */ - ZVAL_NEW_STR(op, STR_INIT(str, len, 0)); - efree(str); + ZVAL_NEW_STR(op, str); break; } case IS_ARRAY: @@ -910,11 +908,7 @@ try_again: return STR_INIT(buf, len, 0); } case IS_DOUBLE: { - char *str; - int len = zend_spprintf(&str, 0, "%.*G", (int) EG(precision), Z_DVAL_P(op)); - zend_string *retval = STR_INIT(str, len, 0); - efree(str); - return retval; + return zend_strpprintf(0, "%.*G", (int) EG(precision), Z_DVAL_P(op)); } case IS_ARRAY: zend_error(E_NOTICE, "Array to string conversion"); @@ -2529,12 +2523,10 @@ ZEND_API void zend_compare_objects(zval *result, zval *o1, zval *o2 TSRMLS_DC) / ZEND_API void zend_locale_sprintf_double(zval *op ZEND_FILE_LINE_DC) /* {{{ */ { TSRMLS_FETCH(); - char *str; - int len; + zend_string *str; - len = zend_spprintf(&str, 0, "%.*G", (int) EG(precision), (double)Z_DVAL_P(op)); - ZVAL_NEW_STR(op, STR_INIT(str, len, 0)); - efree(str); + str = zend_strpprintf(0, "%.*G", (int) EG(precision), (double)Z_DVAL_P(op)); + ZVAL_NEW_STR(op, str); } /* }}} */ |