summaryrefslogtreecommitdiff
path: root/Zend/zend_object_handlers.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_object_handlers.c
parentce18738a30b3d7f20b392c9167aa251c009a0c21 (diff)
downloadphp-git-ccc12b82da5dd10b44ab067b68b762298a9eb4eb.tar.gz
Avoid unnecessary reference-counting on strings.
Diffstat (limited to 'Zend/zend_object_handlers.c')
-rw-r--r--Zend/zend_object_handlers.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 37336cd214..6764e1f3e3 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -886,16 +886,12 @@ static int zend_std_has_dimension(zval *object, zval *offset, int check_empty) /
static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot) /* {{{ */
{
zend_object *zobj;
- zend_string *name;
+ zend_string *name, *tmp_name;
zval *retval = NULL;
uintptr_t property_offset;
zobj = Z_OBJ_P(object);
- if (EXPECTED(Z_TYPE_P(member) == IS_STRING)) {
- name = Z_STR_P(member);
- } else {
- name = zval_get_string(member);
- }
+ name = zval_get_tmp_string(member, &tmp_name);
#if DEBUG_OBJECT_HANDLERS
fprintf(stderr, "Ptr object #%d property: %s\n", Z_OBJ_HANDLE_P(object), ZSTR_VAL(name));
@@ -928,9 +924,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type,
zobj->properties = zend_array_dup(zobj->properties);
}
if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) {
- if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
- zend_string_release(name);
- }
+ zend_tmp_string_release(tmp_name);
return retval;
}
}
@@ -948,9 +942,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type,
}
}
- if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
- zend_string_release(name);
- }
+ zend_tmp_string_release(tmp_name);
return retval;
}
/* }}} */