From ccc12b82da5dd10b44ab067b68b762298a9eb4eb Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 16 Nov 2017 17:09:32 +0300 Subject: Avoid unnecessary reference-counting on strings. --- ext/reflection/php_reflection.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'ext/reflection/php_reflection.c') diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 4291883ce9..749c7e7656 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -547,10 +547,11 @@ static void _const_string(smart_str *str, char *name, zval *value, char *indent) smart_str_append_printf(str, "%s Constant [ %s %s ] { %s }\n", indent, type, name, Z_STRVAL_P(value)); } else { - zend_string *value_str = zval_get_string(value); + zend_string *tmp_value_str; + zend_string *value_str = zval_get_tmp_string(value, &tmp_value_str); smart_str_append_printf(str, "%s Constant [ %s %s ] { %s }\n", indent, type, name, ZSTR_VAL(value_str)); - zend_string_release(value_str); + zend_tmp_string_release(tmp_value_str); } } /* }}} */ @@ -568,12 +569,13 @@ static void _class_const_string(smart_str *str, char *name, zend_class_constant smart_str_append_printf(str, "%sConstant [ %s %s %s ] { Array }\n", indent, visibility, type, name); } else { - zend_string *value_str = zval_get_string(&c->value); + zend_string *tmp_value_str; + zend_string *value_str = zval_get_tmp_string(&c->value, &tmp_value_str); smart_str_append_printf(str, "%sConstant [ %s %s %s ] { %s }\n", indent, visibility, type, name, ZSTR_VAL(value_str)); - zend_string_release(value_str); + zend_tmp_string_release(tmp_value_str); } } /* }}} */ @@ -660,9 +662,10 @@ static void _parameter_string(smart_str *str, zend_function *fptr, struct _zend_ } else if (Z_TYPE(zv) == IS_ARRAY) { smart_str_appends(str, "Array"); } else { - zend_string *zv_str = zval_get_string(&zv); + zend_string *tmp_zv_str; + zend_string *zv_str = zval_get_tmp_string(&zv, &tmp_zv_str); smart_str_append(str, zv_str); - zend_string_release(zv_str); + zend_tmp_string_release(tmp_zv_str); } zval_ptr_dtor(&zv); } -- cgit v1.2.1