summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-11-16 17:09:32 +0300
committerDmitry Stogov <dmitry@zend.com>2017-11-16 17:09:32 +0300
commitccc12b82da5dd10b44ab067b68b762298a9eb4eb (patch)
tree9b17d9d3f99f518fe44532c55ac255c3e0134a13 /Zend/zend.c
parentce18738a30b3d7f20b392c9167aa251c009a0c21 (diff)
downloadphp-git-ccc12b82da5dd10b44ab067b68b762298a9eb4eb.tar.gz
Avoid unnecessary reference-counting on strings.
Diffstat (limited to 'Zend/zend.c')
-rw-r--r--Zend/zend.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index 290807e67a..70def493cd 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -322,14 +322,15 @@ ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy) /* {{{ */
ZEND_API size_t zend_print_zval(zval *expr, int indent) /* {{{ */
{
- zend_string *str = zval_get_string(expr);
+ zend_string *tmp_str;
+ zend_string *str = zval_get_tmp_string(expr, &tmp_str);
size_t len = ZSTR_LEN(str);
if (len != 0) {
zend_write(ZSTR_VAL(str), len);
}
- zend_string_release(str);
+ zend_tmp_string_release(tmp_str);
return len;
}
/* }}} */
@@ -436,9 +437,12 @@ static void zend_print_zval_r_to_buf(smart_str *buf, zval *expr, int indent) /*
case IS_REFERENCE:
zend_print_zval_r_to_buf(buf, Z_REFVAL_P(expr), indent);
break;
+ case IS_STRING:
+ smart_str_append(buf, Z_STR_P(expr));
+ break;
default:
{
- zend_string *str = zval_get_string(expr);
+ zend_string *str = zval_get_string_func(expr);
smart_str_append(buf, str);
zend_string_release(str);
}