diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-11-16 17:09:32 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-11-16 17:09:32 +0300 |
commit | ccc12b82da5dd10b44ab067b68b762298a9eb4eb (patch) | |
tree | 9b17d9d3f99f518fe44532c55ac255c3e0134a13 /Zend/zend_object_handlers.c | |
parent | ce18738a30b3d7f20b392c9167aa251c009a0c21 (diff) | |
download | php-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.c | 16 |
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; } /* }}} */ |