summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2014-05-10 00:21:49 +0800
committerXinchen Hui <laruence@php.net>2014-05-10 00:21:49 +0800
commit88c550a7998d4af00767237b89f020ae3acac61b (patch)
tree5ff186b3072797bd03a1167c6d6e0c9b0d1e2140 /Zend/zend_operators.c
parente2890e3a0f3ea5a9ce4b9c8e9e78777f012a4b74 (diff)
downloadphp-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.c22
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);
}
/* }}} */