summaryrefslogtreecommitdiff
path: root/ext/spl/php_spl.c
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2020-08-07 14:31:52 +0000
committerSara Golemon <pollita@php.net>2020-12-01 18:36:21 +0000
commit1071d857645e89578925fab0d1998fbb3b0d7534 (patch)
treef33ed81184c5fb942d9486da367b95e4a5ba8fd1 /ext/spl/php_spl.c
parent0811ccb44d689f5692056260ed28c500e3eb6591 (diff)
downloadphp-git-1071d857645e89578925fab0d1998fbb3b0d7534.tar.gz
Flesh out HashTable insertion APIs
Fills out the array/object-property insert helpers for zend_array, zend_object, and zend_reference. This adds the following matrix of 18 APIs add_next_index_T() add_index_T() add_assoc_T() add_assoc_T_ex() add_property_T() add_property_T_ex() Where T in array, object, reference Converted internal callsites currently doing an explicit object wrap.
Diffstat (limited to 'ext/spl/php_spl.c')
-rw-r--r--ext/spl/php_spl.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 09c876b45f..8afdb833e7 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -604,17 +604,15 @@ PHP_FUNCTION(spl_autoload_functions)
if (SPL_G(autoload_functions)) {
ZEND_HASH_FOREACH_PTR(SPL_G(autoload_functions), alfi) {
if (alfi->closure) {
- zval obj_zv;
- ZVAL_OBJ_COPY(&obj_zv, alfi->closure);
- add_next_index_zval(return_value, &obj_zv);
+ GC_ADDREF(alfi->closure);
+ add_next_index_object(return_value, alfi->closure);
} else if (alfi->func_ptr->common.scope) {
zval tmp;
array_init(&tmp);
if (alfi->obj) {
- zval obj_zv;
- ZVAL_OBJ_COPY(&obj_zv, alfi->obj);
- add_next_index_zval(&tmp, &obj_zv);
+ GC_ADDREF(alfi->obj);
+ add_next_index_object(&tmp, alfi->obj);
} else {
add_next_index_str(&tmp, zend_string_copy(alfi->ce->name));
}