]> granicus.if.org Git - php/commitdiff
Add zend_array_release() function
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 6 May 2020 09:27:20 +0000 (11:27 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 6 May 2020 09:27:20 +0000 (11:27 +0200)
To complement zend_string_release() and zend_object_release().

Zend/zend_execute_API.c
Zend/zend_hash.h

index ce801c3098faf7ef1fc795ccbe39dd1f52408679..d98db72fba5f1017daf430d2f1b7dff2ae78b601 100644 (file)
@@ -305,9 +305,7 @@ void shutdown_executor(void) /* {{{ */
                                                if (op_array->static_variables) {
                                                        HashTable *ht = ZEND_MAP_PTR_GET(op_array->static_variables_ptr);
                                                        if (ht) {
-                                                               if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) == 0) {
-                                                                       zend_array_destroy(ht);
-                                                               }
+                                                               zend_array_release(ht);
                                                                ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
                                                        }
                                                }
index 632658d938772514b63677dc5c82325c0cfe116a..d2b6ab2c71a15a5250ef34f829a0329e66387b05 100644 (file)
@@ -324,6 +324,14 @@ static zend_always_inline void zend_hash_iterators_update(HashTable *ht, HashPos
        }
 }
 
+static zend_always_inline void zend_array_release(zend_array *array)
+{
+       if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
+               if (GC_DELREF(array) == 0) {
+                       zend_array_destroy(array);
+               }
+       }
+}
 
 END_EXTERN_C()